12:48:00.584 [debug] QUERY OK source="settings" db=0.4ms idle=540.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:48:00.585 [debug] QUERY OK source="settings" db=0.3ms idle=541.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:48:00.588 [info] Sent 200 in 7ms 12:48:00.823 [info] {"args":{"id":18},"id":202859,"meta":{},"system_time":1767404880822838385,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 12:48:00.823 [debug] QUERY OK source="sources" db=0.4ms idle=240.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [18] 12:48:00.825 [debug] QUERY OK source="settings" db=0.5ms queue=0.1ms idle=240.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:48:00.825 [debug] QUERY OK source="media_profiles" db=0.4ms queue=0.1ms idle=239.8ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 12:48:00.826 [debug] QUERY OK source="settings" db=0.2ms idle=11.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:48:00.826 [debug] Fetching recent media IDs from YouTube API for playlist: UUuisDAMnvHMYuLFRedMgmVw 12:48:00.827 [debug] QUERY OK source="settings" db=0.4ms idle=4.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:48:00.827 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 12:48:01.111 [info] GET /sources/14/media/58722/edit 12:48:01.111 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "58722", "source_id" => "14"} Pipelines: [:browser] 12:48:01.112 [debug] QUERY OK source="media_items" db=0.4ms idle=287.8ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [58722] 12:48:01.113 [debug] QUERY OK source="settings" db=0.2ms idle=287.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:48:01.113 [debug] QUERY OK source="settings" db=0.2ms idle=287.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:48:01.115 [debug] QUERY OK source="settings" db=0.3ms queue=0.1ms idle=287.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:48:01.117 [info] Sent 200 in 6ms 12:48:01.227 [debug] QUERY OK source="media_items" db=3.5ms idle=395.9ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND m0."media_id" IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [18, "mf2Em7F_qDM", "PjvBtlIGGQU", "EF_PO-pALOQ", "j9eh7huEF4A", "y3FGuwfGzL0", "ZWH_eu9wdUE", "UccWWifa8jA", "0L8xWydKOhk", "CkSloYV3ay4", "SkQ7ywGW2HY", "QM3qu001Xdk", "jOTurZWIEmw", "pojDco-WhA4", "GD19Y1VYBKY", "cvViWSBLu-U", "wXm5ocXv9ho", "uB1Tk9eXQbk", "I7vb-PGArW4", "0h9qvAA5dfQ", "7yx-SecBATo", "oj1ySj7TVJk", "dtTdjRB4Q4g", "mpfcVNb8Mhs", "D3MFnCKv2Mc", "458_RTLWN2E", "W26HiyQ5k1s", "w4NDxPYJs1I", "cxuEV05UN7U", "5cPjR5FVDOw", "nJhbZNSrP4c", "X9Eu7mui35E", "wrgZHIpa6F0", "JEN7jfNqy1A", "v31DYiS2LbY", "iJfD5wWLvuM", "qPVTMbiyPLE", "rM_nvsztYlw", "IoD1j3ZG-SQ", "DDnqxbWvIgQ", "HIhF6C1yc7M", "DlNIxjiqQvs", "JO0-kOXXMEw", "2DihqSsed3w", "uDlvlF5iKz8", "v2jg_5WZ41o", "JekH9K8_SS8", "xVV_6qW_Ho8", "qYOABpvD49s", "VAw8zvyLmfE", ...] 12:48:01.235 [debug] QUERY OK source="media_items" db=5.9ms idle=116.6ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [18] 12:48:01.239 [debug] QUERY OK source="tasks" db=0.7ms idle=123.4ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [202883, 18, ~U[2026-01-03 01:48:01Z], ~U[2026-01-03 01:48:01Z]] 12:48:01.240 [info] {"args":{"id":18},"id":202859,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":416476,"event":"job:stop","queue_time":406827,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 12:48:01.635 [info] GET /sources/17/media/56518/edit 12:48:01.635 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "56518", "source_id" => "17"} Pipelines: [:browser] 12:48:01.637 [debug] QUERY OK source="media_items" db=1.2ms idle=399.1ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [56518] 12:48:01.639 [debug] QUERY OK source="settings" db=0.6ms idle=400.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:48:01.640 [debug] QUERY OK source="settings" db=0.4ms queue=0.1ms idle=400.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:48:01.641 [debug] QUERY OK source="settings" db=0.4ms queue=0.1ms idle=401.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:48:01.645 [info] Sent 200 in 9ms 12:48:02.156 [info] GET /sources/14/media/13280/edit 12:48:02.157 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "13280", "source_id" => "14"} Pipelines: [:browser] 12:48:02.158 [debug] QUERY OK source="media_items" db=0.5ms idle=519.5ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [13280] 12:48:02.158 [debug] QUERY OK source="settings" db=0.3ms idle=519.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:48:02.159 [debug] QUERY OK source="settings" db=0.3ms idle=518.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:48:02.160 [debug] QUERY OK source="settings" db=0.2ms idle=518.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:48:02.162 [info] Sent 200 in 5ms 12:48:02.698 [info] GET /sources/17/media/35338/edit 12:48:02.699 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "35338", "source_id" => "17"} Pipelines: [:browser] 12:48:02.700 [debug] QUERY OK source="media_items" db=0.4ms idle=881.3ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [35338] 12:48:02.701 [debug] QUERY OK source="settings" db=0.4ms queue=0.1ms idle=542.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:48:02.701 [debug] QUERY OK source="settings" db=0.3ms queue=0.1ms idle=542.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:48:02.702 [debug] QUERY OK source="settings" db=0.2ms idle=542.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:48:02.704 [info] Sent 200 in 5ms 12:48:03.228 [info] GET /sources/13/media/58780/edit 12:48:03.228 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "58780", "source_id" => "13"} Pipelines: [:browser] 12:48:03.229 [debug] QUERY OK source="media_items" db=0.4ms queue=0.1ms idle=529.0ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [58780] 12:48:03.230 [debug] QUERY OK source="settings" db=0.2ms idle=529.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:48:03.231 [debug] QUERY OK source="settings" db=0.3ms idle=529.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:48:03.232 [debug] QUERY OK source="settings" db=0.5ms idle=529.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:48:03.235 [info] Sent 200 in 7ms 12:48:03.737 [info] GET /sources/14/media/32649/edit 12:48:03.737 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "32649", "source_id" => "14"} Pipelines: [:browser] 12:48:03.739 [debug] QUERY OK source="media_items" db=0.7ms queue=0.2ms idle=917.7ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [32649] 12:48:03.740 [debug] QUERY OK source="settings" db=0.5ms queue=0.1ms idle=509.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:48:03.741 [debug] QUERY OK source="settings" db=0.4ms queue=0.1ms idle=509.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:48:03.742 [debug] QUERY OK source="settings" db=0.4ms queue=0.1ms idle=510.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:48:03.745 [info] Sent 200 in 8ms 12:48:04.277 [info] GET /sources/14/media/32651/edit 12:48:04.277 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "32651", "source_id" => "14"} Pipelines: [:browser] 12:48:04.278 [debug] QUERY OK source="media_items" db=0.8ms idle=538.6ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [32651] 12:48:04.279 [debug] QUERY OK source="settings" db=0.4ms idle=538.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:48:04.280 [debug] QUERY OK source="settings" db=0.4ms idle=538.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:48:04.281 [debug] QUERY OK source="settings" db=0.5ms queue=0.1ms idle=538.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:48:04.283 [info] Sent 200 in 6ms 12:48:04.789 [info] GET /sources/11/media/58625/edit 12:48:04.789 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "58625", "source_id" => "11"} Pipelines: [:browser] 12:48:04.790 [debug] QUERY OK source="media_items" db=0.7ms idle=967.2ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [58625] 12:48:04.791 [debug] QUERY OK source="settings" db=0.4ms idle=512.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:48:04.792 [debug] QUERY OK source="settings" db=0.4ms idle=512.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:48:04.793 [debug] QUERY OK source="settings" db=0.4ms idle=512.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:48:04.794 [info] Sent 200 in 5ms 12:48:05.301 [info] GET /sources/11/media/58565/edit 12:48:05.302 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "58565", "source_id" => "11"} Pipelines: [:browser] 12:48:05.303 [debug] QUERY OK source="media_items" db=0.5ms idle=511.7ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [58565] 12:48:05.304 [debug] QUERY OK source="settings" db=0.3ms idle=512.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:48:05.304 [debug] QUERY OK source="settings" db=0.2ms queue=0.1ms idle=512.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:48:05.306 [debug] QUERY OK source="settings" db=0.3ms idle=512.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:48:05.309 [info] Sent 200 in 8ms 12:48:05.820 [info] GET /sources/22/media/21274/edit 12:48:05.820 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "21274", "source_id" => "22"} Pipelines: [:browser] 12:48:05.821 [debug] QUERY OK source="media_items" db=0.4ms idle=994.7ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [21274] 12:48:05.821 [debug] QUERY OK source="settings" db=0.2ms idle=518.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:48:05.822 [debug] QUERY OK source="settings" db=0.4ms idle=517.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:48:05.823 [debug] QUERY OK source="settings" db=0.3ms idle=518.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:48:05.825 [info] Sent 200 in 4ms 12:48:06.368 [info] GET /sources/23/media/21385/edit 12:48:06.368 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "21385", "source_id" => "23"} Pipelines: [:browser] 12:48:06.370 [debug] QUERY OK source="media_items" db=0.9ms idle=548.0ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [21385] 12:48:06.371 [debug] QUERY OK source="settings" db=0.5ms idle=548.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:48:06.372 [debug] QUERY OK source="settings" db=0.7ms idle=548.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:48:06.374 [debug] QUERY OK source="settings" db=1.0ms queue=0.1ms idle=549.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:48:06.377 [info] Sent 200 in 8ms 12:48:06.881 [info] GET /sources/11/media/55269/edit 12:48:06.881 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "55269", "source_id" => "11"} Pipelines: [:browser] 12:48:06.882 [debug] QUERY OK source="media_items" db=0.7ms idle=511.9ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [55269] 12:48:06.883 [debug] QUERY OK source="settings" db=0.2ms idle=512.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:48:06.884 [debug] QUERY OK source="settings" db=0.1ms idle=512.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:48:06.885 [debug] QUERY OK source="settings" db=0.3ms idle=510.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:48:06.886 [info] Sent 200 in 5ms 12:48:07.393 [info] GET /sources/11/media/35227/edit 12:48:07.393 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "35227", "source_id" => "11"} Pipelines: [:browser] 12:48:07.394 [debug] QUERY OK source="media_items" db=0.4ms idle=561.0ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [35227] 12:48:07.395 [debug] QUERY OK source="settings" db=0.2ms idle=512.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:48:07.396 [debug] QUERY OK source="settings" db=0.1ms idle=511.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:48:07.397 [debug] QUERY OK source="settings" db=0.1ms idle=512.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:48:07.398 [info] Sent 200 in 5ms 12:48:07.912 [info] GET /sources/23/media/21391/edit 12:48:07.912 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "21391", "source_id" => "23"} Pipelines: [:browser] 12:48:07.913 [debug] QUERY OK source="media_items" db=0.4ms queue=0.1ms idle=518.6ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [21391] 12:48:07.915 [debug] QUERY OK source="settings" db=0.3ms queue=0.1ms idle=518.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:48:07.915 [debug] QUERY OK source="settings" db=0.4ms queue=0.1ms idle=519.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:48:07.917 [debug] QUERY OK source="settings" db=0.3ms queue=0.1ms idle=519.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:48:07.920 [info] Sent 200 in 7ms 12:48:08.418 [info] GET /sources/22/media/21298/edit 12:48:08.419 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "21298", "source_id" => "22"} Pipelines: [:browser] 12:48:08.420 [debug] QUERY OK source="media_items" db=0.4ms idle=583.7ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [21298] 12:48:08.421 [debug] QUERY OK source="settings" db=0.2ms idle=507.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:48:08.422 [debug] QUERY OK source="settings" db=0.2ms idle=506.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:48:08.423 [debug] QUERY OK source="settings" db=0.4ms idle=507.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:48:08.426 [info] Sent 200 in 7ms 12:48:08.949 [info] GET /sources/23/media/21394/edit 12:48:08.949 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "21394", "source_id" => "23"} Pipelines: [:browser] 12:48:08.951 [debug] QUERY OK source="media_items" db=0.7ms queue=0.1ms idle=530.0ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [21394] 12:48:08.952 [debug] QUERY OK source="settings" db=0.2ms idle=530.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:48:08.952 [debug] QUERY OK source="settings" db=0.3ms idle=530.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:48:08.953 [debug] QUERY OK source="settings" db=0.4ms idle=529.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:48:08.955 [info] Sent 200 in 5ms 12:48:09.485 [info] GET /sources/13/media/12734/edit 12:48:09.485 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "12734", "source_id" => "13"} Pipelines: [:browser] 12:48:09.486 [debug] QUERY OK source="media_items" db=0.7ms idle=646.7ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [12734] 12:48:09.487 [debug] QUERY OK source="settings" db=0.4ms idle=535.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:48:09.488 [debug] QUERY OK source="settings" db=0.3ms idle=535.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:48:09.489 [debug] QUERY OK source="settings" db=0.3ms idle=536.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:48:09.492 [info] Sent 200 in 6ms 12:48:10.013 [info] GET /sources/13/media/38817/edit 12:48:10.013 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "38817", "source_id" => "13"} Pipelines: [:browser] 12:48:10.015 [debug] QUERY OK source="media_items" db=1.0ms idle=527.5ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [38817] 12:48:10.016 [debug] QUERY OK source="settings" db=0.6ms idle=528.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:48:10.018 [debug] QUERY OK source="settings" db=1.7ms idle=528.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:48:10.019 [debug] QUERY OK source="settings" db=0.2ms idle=530.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:48:10.020 [info] Sent 200 in 7ms 12:48:10.543 [info] GET /sources/17/media/43355/edit 12:48:10.544 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "43355", "source_id" => "17"} Pipelines: [:browser] 12:48:10.545 [debug] QUERY OK source="media_items" db=1.0ms idle=702.3ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [43355] 12:48:10.546 [debug] QUERY OK source="settings" db=0.6ms idle=530.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:48:10.547 [debug] QUERY OK source="settings" db=0.3ms idle=530.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:48:10.548 [debug] QUERY OK source="settings" db=0.7ms idle=529.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:48:10.552 [info] Sent 200 in 8ms 12:48:11.089 [info] GET /sources/11/media/58657/edit 12:48:11.090 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "58657", "source_id" => "11"} Pipelines: [:browser] 12:48:11.091 [debug] QUERY OK source="media_items" db=0.5ms idle=544.8ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [58657] 12:48:11.091 [debug] QUERY OK source="settings" db=0.2ms idle=544.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:48:11.092 [debug] QUERY OK source="settings" db=0.4ms idle=544.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:48:11.094 [debug] QUERY OK source="settings" db=0.3ms queue=0.1ms idle=544.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:48:11.096 [info] Sent 200 in 6ms 12:48:11.629 [info] GET /sources/11/media/58543/edit 12:48:11.630 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "58543", "source_id" => "11"} Pipelines: [:browser] 12:48:11.631 [debug] QUERY OK source="media_items" db=0.5ms queue=0.1ms idle=783.5ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [58543] 12:48:11.632 [debug] QUERY OK source="settings" db=0.6ms idle=540.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:48:11.633 [debug] QUERY OK source="settings" db=0.4ms idle=540.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:48:11.634 [debug] QUERY OK source="settings" db=0.3ms idle=541.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:48:11.636 [info] Sent 200 in 6ms 12:48:11.859 [info] {"args":{"id":16},"id":202860,"meta":{},"system_time":1767404891859256997,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 12:48:11.860 [debug] QUERY OK source="sources" db=0.8ms idle=227.2ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [16] 12:48:11.862 [debug] QUERY OK source="settings" db=1.1ms idle=227.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:48:11.863 [debug] QUERY OK source="media_profiles" db=0.5ms idle=228.0ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 12:48:11.863 [debug] QUERY OK source="settings" db=0.4ms queue=0.1ms idle=12.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:48:11.863 [debug] Fetching recent media IDs from YouTube API for playlist: UUPPfK7Nq_yQR84rn1wcTXBg 12:48:11.864 [debug] QUERY OK source="settings" db=0.2ms idle=5.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:48:11.864 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 12:48:12.131 [info] GET /sources/13/media/55735/edit 12:48:12.132 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "55735", "source_id" => "13"} Pipelines: [:browser] 12:48:12.133 [debug] QUERY OK source="media_items" db=0.9ms queue=0.1ms idle=271.9ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [55735] 12:48:12.134 [debug] QUERY OK source="settings" db=0.4ms idle=272.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:48:12.135 [debug] QUERY OK source="settings" db=0.3ms idle=271.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:48:12.136 [debug] QUERY OK source="settings" db=0.4ms idle=272.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:48:12.138 [info] Sent 200 in 6ms 12:48:12.260 [debug] QUERY OK source="media_items" db=3.0ms queue=0.1ms idle=392.2ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND m0."media_id" IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [16, "BiTNUZ2zONY", "7pVLE7ggkcc", "YAh-xEteBz4", "6hNpMT5OwGo", "vx3oGZYqxm4", "7W_ZSNuS-4w", "CxUC2HXvO84", "RxapAZRYJ6I", "f2ainZL8Tzk", "KJtASaKc95g", "yBCh5cyI0Po", "dg_HQL3GBcY", "ZiVvXPpo0eE", "YO1TnWptv3o", "HwnBnsQBeOA", "CCE2v3oIa74", "OWVPYr9e76Y", "VApJtIyMEec", "XtOIQYVq26o", "gZL1KzV54Cw", "kmU-Eazta1s", "XXthHXEpEP8", "dPw_HkMgYI0", "rxq-TvgNCBU", "SaCbUtTuLhA", "TWLqSk4ZlN0", "p7_rduK5WA0", "lNZ56C-f4a8", "GlK3f1cs_l4", "Yabwyb14-BQ", "WupRwvJ7sOc", "MhpoNL1gZbw", "yUfm6AbtJ0g", "y8zfgIgZ4c0", "gOwjmKMmkV4", "aTiunvocl5c", "KebjX3KEgWQ", "0T2MYXljL5o", "i7sbS92R4cg", "66CDGzjLBtY", "T_W0FWiJmM8", "u_80rUKItGc", "C9_wibbg1Ug", "A4mg1ZUb-7s", "YmUfZt4Ku9s", "DoWsgrlIjYU", "gc5ojxTuwOg", "3AMdPMoGJus", "htYY8VwN-9g", ...] 12:48:12.266 [debug] QUERY OK source="media_items" db=1.9ms idle=130.8ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [16] 12:48:12.269 [debug] QUERY OK source="tasks" db=0.3ms idle=132.9ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [202884, 16, ~U[2026-01-03 01:48:12Z], ~U[2026-01-03 01:48:12Z]] 12:48:12.270 [info] {"args":{"id":16},"id":202860,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":410635,"event":"job:stop","queue_time":441009,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 12:48:12.409 [info] {"source":"oban","duration":2702,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:48:12.672 [info] GET /sources/23/media/21400/edit 12:48:12.673 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "21400", "source_id" => "23"} Pipelines: [:browser] 12:48:12.674 [debug] QUERY OK source="media_items" db=0.4ms idle=404.3ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [21400] 12:48:12.674 [debug] QUERY OK source="settings" db=0.3ms idle=404.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:48:12.675 [debug] QUERY OK source="settings" db=0.4ms idle=404.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:48:12.676 [debug] QUERY OK source="settings" db=0.4ms idle=395.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:48:12.677 [info] Sent 200 in 4ms 12:48:13.218 [info] GET /sources/11/media/58619/edit 12:48:13.218 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "58619", "source_id" => "11"} Pipelines: [:browser] 12:48:13.219 [debug] QUERY OK source="media_items" db=0.6ms queue=0.1ms idle=544.9ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [58619] 12:48:13.220 [debug] QUERY OK source="settings" db=0.5ms idle=545.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:48:13.222 [debug] QUERY OK source="settings" db=0.8ms queue=0.1ms idle=545.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:48:13.223 [debug] QUERY OK source="settings" db=0.3ms idle=546.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:48:13.224 [info] Sent 200 in 5ms 12:48:13.739 [info] GET /sources/11/media/59538/edit 12:48:13.740 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "59538", "source_id" => "11"} Pipelines: [:browser] 12:48:13.746 [debug] QUERY OK source="media_items" db=0.7ms queue=0.1ms idle=891.1ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [59538] 12:48:13.747 [debug] QUERY OK source="settings" db=0.4ms idle=527.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:48:13.747 [debug] QUERY OK source="settings" db=0.3ms idle=526.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:48:13.748 [debug] QUERY OK source="settings" db=0.3ms idle=526.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:48:13.750 [info] Sent 200 in 10ms 12:48:14.291 [info] GET /sources/22/media/21296/edit 12:48:14.291 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "21296", "source_id" => "22"} Pipelines: [:browser] 12:48:14.293 [debug] QUERY OK source="media_items" db=0.6ms idle=546.2ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [21296] 12:48:14.294 [debug] QUERY OK source="settings" db=0.2ms idle=546.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:48:14.294 [debug] QUERY OK source="settings" db=0.2ms idle=546.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:48:14.296 [debug] QUERY OK source="settings" db=0.2ms idle=546.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:48:14.298 [info] Sent 200 in 7ms 12:48:14.789 [info] GET /sources/22/media/21293/edit 12:48:14.789 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "21293", "source_id" => "22"} Pipelines: [:browser] 12:48:14.791 [debug] QUERY OK source="media_items" db=0.4ms idle=934.1ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [21293] 12:48:14.792 [debug] QUERY OK source="settings" db=0.2ms idle=498.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:48:14.792 [debug] QUERY OK source="settings" db=0.5ms idle=498.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:48:14.793 [debug] QUERY OK source="settings" db=0.3ms idle=498.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:48:14.796 [info] Sent 200 in 6ms 12:48:15.304 [info] GET /sources/23/media/21397/edit 12:48:15.304 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "21397", "source_id" => "23"} Pipelines: [:browser] 12:48:15.306 [debug] QUERY OK source="media_items" db=0.9ms idle=514.0ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [21397] 12:48:15.306 [debug] QUERY OK source="settings" db=0.3ms idle=514.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:48:15.307 [debug] QUERY OK source="settings" db=0.3ms idle=514.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:48:15.308 [debug] QUERY OK source="settings" db=0.5ms idle=513.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:48:15.311 [info] Sent 200 in 6ms 12:48:15.827 [info] GET /sources/13/media/12721/edit 12:48:15.828 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "12721", "source_id" => "13"} Pipelines: [:browser] 12:48:15.829 [debug] QUERY OK source="media_items" db=0.5ms idle=968.0ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [12721] 12:48:15.830 [debug] QUERY OK source="settings" db=0.3ms idle=523.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:48:15.830 [debug] QUERY OK source="settings" db=0.1ms idle=523.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:48:15.831 [debug] QUERY OK source="settings" db=0.2ms idle=524.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:48:15.833 [info] Sent 200 in 5ms 12:48:16.370 [info] GET /sources/17/media/50561/edit 12:48:16.370 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "50561", "source_id" => "17"} Pipelines: [:browser] 12:48:16.371 [debug] QUERY OK source="media_items" db=0.4ms idle=541.9ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [50561] 12:48:16.372 [debug] QUERY OK source="settings" db=0.2ms idle=542.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:48:16.373 [debug] QUERY OK source="settings" db=0.3ms idle=542.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:48:16.375 [debug] QUERY OK source="settings" db=0.6ms idle=542.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:48:16.377 [info] Sent 200 in 7ms 12:48:16.914 [info] GET /sources/11/media/58586/edit 12:48:16.914 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "58586", "source_id" => "11"} Pipelines: [:browser] 12:48:16.915 [debug] QUERY OK source="media_items" db=0.7ms idle=542.8ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [58586] 12:48:16.916 [debug] QUERY OK source="settings" db=0.3ms idle=543.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:48:16.917 [debug] QUERY OK source="settings" db=0.4ms idle=543.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:48:16.918 [debug] QUERY OK source="settings" db=0.2ms idle=542.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:48:16.919 [info] Sent 200 in 5ms 12:48:17.416 [info] GET /sources/23/media/21396/edit 12:48:17.416 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "21396", "source_id" => "23"} Pipelines: [:browser] 12:48:17.418 [debug] QUERY OK source="media_items" db=1.6ms idle=550.8ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [21396] 12:48:17.420 [debug] QUERY OK source="settings" db=0.9ms idle=503.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:48:17.422 [debug] QUERY OK source="settings" db=1.2ms idle=504.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:48:17.428 [debug] QUERY OK source="settings" db=4.2ms queue=0.3ms idle=506.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:48:17.429 [info] Sent 200 in 12ms 12:48:17.951 [info] GET /sources/17/media/39302/edit 12:48:17.951 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "39302", "source_id" => "17"} Pipelines: [:browser] 12:48:17.952 [debug] QUERY OK source="media_items" db=0.4ms idle=533.0ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [39302] 12:48:17.952 [debug] QUERY OK source="settings" db=0.2ms idle=531.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:48:17.953 [debug] QUERY OK source="settings" db=0.3ms idle=530.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:48:17.954 [debug] QUERY OK source="settings" db=0.4ms idle=525.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:48:17.956 [info] Sent 200 in 5ms 12:48:18.481 [info] GET /sources/23/media/21390/edit 12:48:18.481 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "21390", "source_id" => "23"} Pipelines: [:browser] 12:48:18.482 [debug] QUERY OK source="media_items" db=0.4ms idle=613.4ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [21390] 12:48:18.483 [debug] QUERY OK source="settings" db=0.3ms idle=530.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:48:18.483 [debug] QUERY OK source="settings" db=0.3ms idle=530.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:48:18.484 [debug] QUERY OK source="settings" db=0.2ms idle=531.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:48:18.486 [info] Sent 200 in 5ms 12:48:19.006 [info] GET /sources/14/media/55351/edit 12:48:19.007 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "55351", "source_id" => "14"} Pipelines: [:browser] 12:48:19.008 [debug] QUERY OK source="media_items" db=0.7ms idle=525.1ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [55351] 12:48:19.009 [debug] QUERY OK source="settings" db=0.4ms idle=525.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:48:19.010 [debug] QUERY OK source="settings" db=0.3ms idle=526.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:48:19.011 [debug] QUERY OK source="settings" db=0.4ms idle=526.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:48:19.013 [info] Sent 200 in 6ms 12:48:19.538 [info] GET /sources/27/media/58541/edit 12:48:19.538 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "58541", "source_id" => "27"} Pipelines: [:browser] 12:48:19.539 [debug] QUERY OK source="media_items" db=0.6ms idle=667.3ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [58541] 12:48:19.540 [debug] QUERY OK source="settings" db=0.3ms idle=531.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:48:19.541 [debug] QUERY OK source="settings" db=0.2ms idle=531.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:48:19.542 [debug] QUERY OK source="settings" db=0.4ms idle=531.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:48:19.543 [info] Sent 200 in 5ms 12:48:20.074 [info] GET /sources/11/media/58554/edit 12:48:20.074 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "58554", "source_id" => "11"} Pipelines: [:browser] 12:48:20.075 [debug] QUERY OK source="media_items" db=0.6ms idle=534.9ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [58554] 12:48:20.076 [debug] QUERY OK source="settings" db=0.4ms idle=535.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:48:20.076 [debug] QUERY OK source="settings" db=0.3ms idle=535.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:48:20.077 [debug] QUERY OK source="settings" db=0.4ms idle=535.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:48:20.079 [info] Sent 200 in 5ms 12:48:20.581 [info] GET /sources/13/media/58783/edit 12:48:20.581 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "58783", "source_id" => "13"} Pipelines: [:browser] 12:48:20.582 [debug] QUERY OK source="media_items" db=0.8ms idle=706.8ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [58783] 12:48:20.583 [debug] QUERY OK source="settings" db=0.4ms idle=507.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:48:20.584 [debug] QUERY OK source="settings" db=0.3ms idle=507.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:48:20.585 [debug] QUERY OK source="settings" db=0.4ms idle=508.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:48:20.587 [info] Sent 200 in 5ms 12:48:21.107 [info] GET /sources/13/media/12738/edit 12:48:21.107 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "12738", "source_id" => "13"} Pipelines: [:browser] 12:48:21.108 [debug] QUERY OK source="media_items" db=0.8ms queue=0.1ms idle=524.8ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [12738] 12:48:21.109 [debug] QUERY OK source="settings" db=0.5ms queue=0.1ms idle=525.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:48:21.110 [debug] QUERY OK source="settings" db=0.3ms idle=525.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:48:21.111 [debug] QUERY OK source="settings" db=0.2ms idle=525.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:48:21.113 [info] Sent 200 in 6ms 12:48:21.655 [info] GET /sources/22/media/21282/force_download 12:48:21.656 [debug] QUERY OK source="settings" db=0.2ms queue=0.1ms idle=777.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:48:21.657 [debug] QUERY OK source="settings" db=0.1ms idle=548.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:48:21.657 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 12:48:21.658 [error] #PID<0.8950.0> running PinchflatWeb.Endpoint (connection #PID<0.8770.0>, stream id 108) terminated Server: pinchflat.uiau7e.uncld.dev:80 (http) Request: GET /sources/22/media/21282/force_download ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/22/media/21282/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.8770.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/22/media/21282/force_download", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 54780}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYbUpaVGpiZVV0ME5kVVFXajRlWkUyYlNh.OHMWuX1BmdE0WUffCZBYrUR784_9KXu0735DX3PXVxo", "from" => "gptbot(at)openai.com", "host" => "pinchflat.uiau7e.uncld.dev", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.3; +https://openai.com/gptbot)", "via" => "2.0 Caddy", "x-forwarded-for" => "74.7.227.183", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https", "x-openai-host-hash" => "454925582" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 108, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{ "_pinchflat_key" => "SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYbUpaVGpiZVV0ME5kVVFXajRlWkUyYlNh.OHMWuX1BmdE0WUffCZBYrUR784_9KXu0735DX3PXVxo" }, halted: false, host: "pinchflat.uiau7e.uncld.dev", method: "GET", owner: #PID<0.8950.0>, params: %{}, path_info: ["sources", "22", "media", "21282", "force_download"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.uiau7e.uncld.dev", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {10, 210, 0, 2}, req_cookies: %{ "_pinchflat_key" => "SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYbUpaVGpiZVV0ME5kVVFXajRlWkUyYlNh.OHMWuX1BmdE0WUffCZBYrUR784_9KXu0735DX3PXVxo" }, req_headers: [ {"accept", "*/*"}, {"accept-encoding", "gzip, br, deflate"}, {"cookie", "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYbUpaVGpiZVV0ME5kVVFXajRlWkUyYlNh.OHMWuX1BmdE0WUffCZBYrUR784_9KXu0735DX3PXVxo"}, {"from", "gptbot(at)openai.com"}, {"host", "pinchflat.uiau7e.uncld.dev"}, {"user-agent", "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.3; +https://openai.com/gptbot)"}, {"via", "2.0 Caddy"}, {"x-forwarded-for", "74.7.227.183"}, {"x-forwarded-host", "pinchflat.uiau7e.uncld.dev"}, {"x-forwarded-proto", "https"}, {"x-openai-host-hash", "454925582"} ], request_path: "/sources/22/media/21282/force_download", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GIcVZNl15wj0SMEAAGoD"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.8770.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/22/media/21282/force_download", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 54780}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYbUpaVGpiZVV0ME5kVVFXajRlWkUyYlNh.OHMWuX1BmdE0WUffCZBYrUR784_9KXu0735DX3PXVxo", "from" => "gptbot(at)openai.com", "host" => "pinchflat.uiau7e.uncld.dev", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.3; +https://openai.com/gptbot)", "via" => "2.0 Caddy", "x-forwarded-for" => "74.7.227.183", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https", "x-openai-host-hash" => "454925582" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 108, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/22/media/21282/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.8770.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/22/media/21282/force_download", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 54780}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYbUpaVGpiZVV0ME5kVVFXajRlWkUyYlNh.OHMWuX1BmdE0WUffCZBYrUR784_9KXu0735DX3PXVxo", "from" => "gptbot(at)openai.com", "host" => "pinchflat.uiau7e.uncld.dev", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.3; +https://openai.com/gptbot)", "via" => "2.0 Caddy", "x-forwarded-for" => "74.7.227.183", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https", "x-openai-host-hash" => "454925582" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 108, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{ (truncated) 12:48:22.158 [info] GET /sources/22/media/21288/force_download 12:48:22.159 [debug] QUERY OK source="settings" db=0.3ms queue=0.1ms idle=1048.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:48:22.160 [debug] QUERY OK source="settings" db=0.3ms idle=1048.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:48:22.160 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 12:48:22.161 [error] #PID<0.8951.0> running PinchflatWeb.Endpoint (connection #PID<0.8770.0>, stream id 109) terminated Server: pinchflat.uiau7e.uncld.dev:80 (http) Request: GET /sources/22/media/21288/force_download ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/22/media/21288/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.8770.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/22/media/21288/force_download", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 54780}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYbUpaVGpiZVV0ME5kVVFXajRlWkUyYlNh.OHMWuX1BmdE0WUffCZBYrUR784_9KXu0735DX3PXVxo", "from" => "gptbot(at)openai.com", "host" => "pinchflat.uiau7e.uncld.dev", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.3; +https://openai.com/gptbot)", "via" => "2.0 Caddy", "x-forwarded-for" => "74.7.227.183", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https", "x-openai-host-hash" => "454925582" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 109, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{ "_pinchflat_key" => "SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYbUpaVGpiZVV0ME5kVVFXajRlWkUyYlNh.OHMWuX1BmdE0WUffCZBYrUR784_9KXu0735DX3PXVxo" }, halted: false, host: "pinchflat.uiau7e.uncld.dev", method: "GET", owner: #PID<0.8951.0>, params: %{}, path_info: ["sources", "22", "media", "21288", "force_download"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.uiau7e.uncld.dev", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {10, 210, 0, 2}, req_cookies: %{ "_pinchflat_key" => "SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYbUpaVGpiZVV0ME5kVVFXajRlWkUyYlNh.OHMWuX1BmdE0WUffCZBYrUR784_9KXu0735DX3PXVxo" }, req_headers: [ {"accept", "*/*"}, {"accept-encoding", "gzip, br, deflate"}, {"cookie", "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYbUpaVGpiZVV0ME5kVVFXajRlWkUyYlNh.OHMWuX1BmdE0WUffCZBYrUR784_9KXu0735DX3PXVxo"}, {"from", "gptbot(at)openai.com"}, {"host", "pinchflat.uiau7e.uncld.dev"}, {"user-agent", "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.3; +https://openai.com/gptbot)"}, {"via", "2.0 Caddy"}, {"x-forwarded-for", "74.7.227.183"}, {"x-forwarded-host", "pinchflat.uiau7e.uncld.dev"}, {"x-forwarded-proto", "https"}, {"x-openai-host-hash", "454925582"} ], request_path: "/sources/22/media/21288/force_download", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GIcVZPd13NxqWHAAAGoj"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.8770.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/22/media/21288/force_download", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 54780}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYbUpaVGpiZVV0ME5kVVFXajRlWkUyYlNh.OHMWuX1BmdE0WUffCZBYrUR784_9KXu0735DX3PXVxo", "from" => "gptbot(at)openai.com", "host" => "pinchflat.uiau7e.uncld.dev", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.3; +https://openai.com/gptbot)", "via" => "2.0 Caddy", "x-forwarded-for" => "74.7.227.183", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https", "x-openai-host-hash" => "454925582" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 109, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/22/media/21288/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.8770.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/22/media/21288/force_download", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 54780}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYbUpaVGpiZVV0ME5kVVFXajRlWkUyYlNh.OHMWuX1BmdE0WUffCZBYrUR784_9KXu0735DX3PXVxo", "from" => "gptbot(at)openai.com", "host" => "pinchflat.uiau7e.uncld.dev", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.3; +https://openai.com/gptbot)", "via" => "2.0 Caddy", "x-forwarded-for" => "74.7.227.183", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https", "x-openai-host-hash" => "454925582" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 109, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{ (truncated) 12:48:23.689 [info] GET /sources/22/media/21277/force_download 12:48:23.690 [debug] QUERY OK source="settings" db=0.5ms queue=0.1ms idle=1530.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:48:23.691 [debug] QUERY OK source="settings" db=0.2ms idle=1530.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:48:23.691 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 12:48:23.691 [error] #PID<0.8952.0> running PinchflatWeb.Endpoint (connection #PID<0.8770.0>, stream id 110) terminated Server: pinchflat.uiau7e.uncld.dev:80 (http) Request: GET /sources/22/media/21277/force_download ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/22/media/21277/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.8770.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/22/media/21277/force_download", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 54780}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYbUpaVGpiZVV0ME5kVVFXajRlWkUyYlNh.OHMWuX1BmdE0WUffCZBYrUR784_9KXu0735DX3PXVxo", "from" => "gptbot(at)openai.com", "host" => "pinchflat.uiau7e.uncld.dev", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.3; +https://openai.com/gptbot)", "via" => "2.0 Caddy", "x-forwarded-for" => "74.7.227.183", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https", "x-openai-host-hash" => "454925582" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 110, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{ "_pinchflat_key" => "SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYbUpaVGpiZVV0ME5kVVFXajRlWkUyYlNh.OHMWuX1BmdE0WUffCZBYrUR784_9KXu0735DX3PXVxo" }, halted: false, host: "pinchflat.uiau7e.uncld.dev", method: "GET", owner: #PID<0.8952.0>, params: %{}, path_info: ["sources", "22", "media", "21277", "force_download"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.uiau7e.uncld.dev", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {10, 210, 0, 2}, req_cookies: %{ "_pinchflat_key" => "SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYbUpaVGpiZVV0ME5kVVFXajRlWkUyYlNh.OHMWuX1BmdE0WUffCZBYrUR784_9KXu0735DX3PXVxo" }, req_headers: [ {"accept", "*/*"}, {"accept-encoding", "gzip, br, deflate"}, {"cookie", "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYbUpaVGpiZVV0ME5kVVFXajRlWkUyYlNh.OHMWuX1BmdE0WUffCZBYrUR784_9KXu0735DX3PXVxo"}, {"from", "gptbot(at)openai.com"}, {"host", "pinchflat.uiau7e.uncld.dev"}, {"user-agent", "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.3; +https://openai.com/gptbot)"}, {"via", "2.0 Caddy"}, {"x-forwarded-for", "74.7.227.183"}, {"x-forwarded-host", "pinchflat.uiau7e.uncld.dev"}, {"x-forwarded-proto", "https"}, {"x-openai-host-hash", "454925582"} ], request_path: "/sources/22/media/21277/force_download", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GIcVZVKvw5JCAbsAAGpD"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.8770.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/22/media/21277/force_download", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 54780}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYbUpaVGpiZVV0ME5kVVFXajRlWkUyYlNh.OHMWuX1BmdE0WUffCZBYrUR784_9KXu0735DX3PXVxo", "from" => "gptbot(at)openai.com", "host" => "pinchflat.uiau7e.uncld.dev", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.3; +https://openai.com/gptbot)", "via" => "2.0 Caddy", "x-forwarded-for" => "74.7.227.183", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https", "x-openai-host-hash" => "454925582" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 110, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/22/media/21277/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.8770.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/22/media/21277/force_download", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 54780}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYbUpaVGpiZVV0ME5kVVFXajRlWkUyYlNh.OHMWuX1BmdE0WUffCZBYrUR784_9KXu0735DX3PXVxo", "from" => "gptbot(at)openai.com", "host" => "pinchflat.uiau7e.uncld.dev", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.3; +https://openai.com/gptbot)", "via" => "2.0 Caddy", "x-forwarded-for" => "74.7.227.183", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https", "x-openai-host-hash" => "454925582" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 110, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{ (truncated) 12:48:28.543 [info] GET /sources/23/media/21392 12:48:28.543 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "21392", "source_id" => "23"} Pipelines: [:browser] 12:48:28.544 [debug] QUERY OK source="media_items" db=0.4ms idle=1791.9ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [21392] 12:48:28.545 [debug] QUERY OK source="tasks" db=0.4ms idle=1792.7ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [21392] 12:48:28.545 [debug] QUERY OK source="sources" db=0.8ms idle=1792.8ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [23] 12:48:28.546 [debug] QUERY OK source="settings" db=0.4ms idle=1653.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:48:28.547 [debug] QUERY OK source="settings" db=0.3ms idle=652.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:48:28.548 [debug] QUERY OK source="settings" db=0.3ms idle=3.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:48:28.549 [debug] QUERY OK source="media_profiles" db=0.2ms idle=3.6ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 12:48:28.996 [info] Sent 200 in 453ms 12:48:42.290 [info] GET /sources/13/media/12721 12:48:42.290 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "12721", "source_id" => "13"} Pipelines: [:browser] 12:48:42.292 [debug] QUERY OK source="media_items" db=1.5ms idle=539.0ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [12721] 12:48:42.293 [debug] QUERY OK source="sources" db=0.3ms idle=541.1ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [13] 12:48:42.293 [debug] QUERY OK source="tasks" db=0.8ms idle=541.0ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [12721] 12:48:42.294 [debug] QUERY OK source="oban_jobs" db=0.2ms idle=542.2ms SELECT o0."id", o0."state", o0."queue", o0."worker", o0."args", o0."meta", o0."tags", o0."errors", o0."attempt", o0."attempted_by", o0."max_attempts", o0."priority", o0."attempted_at", o0."cancelled_at", o0."completed_at", o0."discarded_at", o0."inserted_at", o0."scheduled_at", o0."id" FROM "oban_jobs" AS o0 WHERE (o0."id" = ?) [180529] 12:48:42.296 [debug] QUERY OK source="settings" db=0.5ms idle=362.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:48:42.296 [debug] QUERY OK source="settings" db=0.2ms queue=0.1ms idle=3.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:48:42.297 [debug] QUERY OK source="settings" db=0.1ms idle=3.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:48:42.298 [debug] QUERY OK source="media_profiles" db=0.1ms idle=4.0ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 12:48:42.300 [info] Sent 200 in 9ms 12:48:42.410 [info] {"source":"oban","duration":1104,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:48:55.070 [info] GET /sources/22/media/21285 12:48:55.070 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "21285", "source_id" => "22"} Pipelines: [:browser] 12:48:55.071 [debug] QUERY OK source="media_items" db=0.4ms idle=1318.9ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [21285] 12:48:55.072 [debug] QUERY OK source="tasks" db=0.3ms idle=1320.0ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [21285] 12:48:55.072 [debug] QUERY OK source="sources" db=0.6ms idle=1320.1ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [22] 12:48:55.073 [debug] QUERY OK source="settings" db=0.2ms idle=1103.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:48:55.074 [debug] QUERY OK source="settings" db=0.1ms idle=100.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:48:55.075 [debug] QUERY OK source="settings" db=0.4ms idle=3.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:48:55.076 [debug] QUERY OK source="media_profiles" db=0.5ms idle=3.7ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 12:48:55.763 [info] Sent 200 in 693ms 12:49:00.097 [info] {"source":"oban","duration":350,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 12:49:06.864 [info] GET /sources/11/media/58575 12:49:06.864 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "58575", "source_id" => "11"} Pipelines: [:browser] 12:49:06.866 [debug] QUERY OK source="media_items" db=0.7ms idle=1113.4ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [58575] 12:49:06.867 [debug] QUERY OK source="tasks" db=0.8ms idle=859.7ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [58575] 12:49:06.867 [debug] QUERY OK source="sources" db=0.8ms idle=114.6ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [11] 12:49:06.868 [debug] QUERY OK source="settings" db=0.8ms idle=116.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:49:06.869 [debug] QUERY OK source="settings" db=0.6ms idle=117.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:49:06.871 [debug] QUERY OK source="settings" db=0.4ms idle=4.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:49:06.873 [debug] QUERY OK source="media_profiles" db=0.2ms idle=5.2ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 12:49:06.876 [info] Sent 200 in 12ms 12:49:12.413 [info] {"source":"oban","duration":1740,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:49:14.037 [info] {"args":{"id":20},"id":202861,"meta":{},"system_time":1767404954037114173,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 12:49:14.037 [debug] QUERY OK source="sources" db=0.3ms idle=1285.4ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [20] 12:49:14.038 [debug] QUERY OK source="settings" db=0.2ms idle=1012.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:49:14.038 [debug] QUERY OK source="media_profiles" db=0.2ms idle=286.5ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 12:49:14.039 [debug] QUERY OK source="settings" db=0.3ms idle=8.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:49:14.039 [debug] Fetching recent media IDs from YouTube API for playlist: UU3HjB3X8jeENm46HCkI0Inw 12:49:14.040 [debug] QUERY OK source="settings" db=0.4ms idle=2.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:49:14.040 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 12:49:14.524 [debug] QUERY OK source="media_items" db=2.6ms idle=484.1ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND m0."media_id" IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [20, "CISwNCR8EXc", "EiIJqc5mV90", "8xJUjtnu72E", "Whh2rDVxvYg", "VybtaBZZqCg", "fuIOAraiRAY", "Ri4qqynMLHk", "xglNhNm95KQ", "5hEq1j_TsEY", "9f5iUsFWqoo", "0SXIhVupLZY", "3gAJpHP3yg4", "8zlnEbQgP74", "EnTFdexbFrM", "P3AU8vUwvAs", "4dQvS_n0uy4", "T5CRSwoP5_w", "cd8IcmBLpXc", "L4nAcT3QYkA", "5gskEcRE1uo", "1xywnh3DqFQ", "fXeqjU4tHqo", "YBMxdPCG_PY", "GB5_4JUB9hc", "EtAUdnvt0kc", "y-5D2HhLbso", "q8kP0pRFRMc", "8mQkTPoWfPo", "U5I92UivGzU", "UoMTKhqTf1U", "oIvzxlDViTo", "kCnh99-yZIs", "orABz0cfQZY", "VKt2PXkavyU", "kYwyB7o7BJs", "UB1FC4Nim1Y", "kN_eMzoJJmA", "4hdpejFLkPc", "ArSlY77uV1w", "2me_AlMFJh8", "OlKsICCPadE", "SjpJZ66rGaU", "iRZp_9irH2g", "CN9qeuO04A4", "BUnuun2sL-8", "XSIfSz3ZEGc", "hW5pHqeC1t4", "_cJV_l9tlaU", "ChT4bsCpwcU", ...] 12:49:14.531 [debug] QUERY OK source="media_items" db=4.4ms idle=488.7ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [20] 12:49:14.535 [debug] QUERY OK source="tasks" db=0.9ms idle=494.3ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [202885, 20, ~U[2026-01-03 01:49:14Z], ~U[2026-01-03 01:49:14Z]] 12:49:14.536 [info] {"args":{"id":20},"id":202861,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":498591,"event":"job:stop","queue_time":336078,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 12:49:17.049 [info] {"args":{"id":21},"id":202862,"meta":{},"system_time":1767404957049227863,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 12:49:17.050 [debug] QUERY OK source="sources" db=0.6ms idle=1297.5ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [21] 12:49:17.051 [debug] QUERY OK source="settings" db=0.4ms idle=1298.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:49:17.051 [debug] QUERY OK source="media_profiles" db=0.6ms idle=1014.2ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 12:49:17.052 [debug] QUERY OK source="settings" db=0.6ms idle=11.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:49:17.052 [debug] Fetching recent media IDs from YouTube API for playlist: UU2-i3KuYoODXsM99Z3-Gm0A 12:49:17.053 [debug] QUERY OK source="settings" db=0.3ms idle=3.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:49:17.053 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 12:49:17.205 [info] GET /sources/22/media/21274 12:49:17.205 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "21274", "source_id" => "22"} Pipelines: [:browser] 12:49:17.206 [debug] QUERY OK source="media_items" db=0.7ms queue=0.1ms idle=155.4ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [21274] 12:49:17.207 [debug] QUERY OK source="tasks" db=0.3ms idle=156.1ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [21274] 12:49:17.208 [debug] QUERY OK source="sources" db=0.6ms idle=155.5ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [22] 12:49:17.209 [debug] QUERY OK source="settings" db=0.4ms idle=155.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:49:17.209 [debug] QUERY OK source="settings" db=0.3ms idle=155.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:49:17.211 [debug] QUERY OK source="settings" db=0.7ms idle=3.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:49:17.212 [debug] QUERY OK source="media_profiles" db=0.2ms idle=4.2ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 12:49:17.544 [debug] QUERY OK source="media_items" db=2.5ms idle=333.2ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND m0."media_id" IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [21, "J5rMffRWoaE", "SpNjg65s29I", "8YoFYb6ahAc", "2z0gjjea0mQ", "2d3dU0R4Sk4", "_TFHZ9W3Jt8", "dqjpFcJG5Cc", "Pm0PXgXMNVY", "YXwzRiYgHHc", "mUK6UT_7PZo", "nE49QFWymsI", "WY4rfxfFsVA", "LHyVvVpA0xM", "HYIwk4qL2os", "RZBQe4RLdZ8", "DN5ES5PlK6c", "OaO4UInG53A", "UqcJk1mPcnQ", "NqSJZesKtFs", "3bsFFOwsQzA", "EaXJ1rQ2v5k", "jnV5Ptgg1Xc", "rXghFt-g_OM", "Y_MU28GV-M0", "OZ1fXb4gcv0", "t7JeRNvBG40", "XG41sdzNz7I", "rQFtIiVV7RA", "TviKrv1FTzc", "0iH3eN6DUbM", "AjzhbnNiJO0", "3Y2fdnw7AwM", "8Z_XpRjS2oo", "RY1Nnw_qOGc", "pUB0TU9UQhI", "eVR3mgSxjUk", "5hGYObRZMPQ", "4MemHNHi_YE", "yM6u1-_JNXo", "VGLq2Tjokl4", "XpV4r2KB0UA", "cvrpvL1kO_8", "Q4kS9l81A0k", "Mq47ro7Pc00", "GAu1Y-5EPeM", "dNIc1vTlbDc", "S1zqKNfggRQ", "zquTrv6kv-U", "-H6sKLcAL9I", ...] 12:49:17.551 [debug] QUERY OK source="media_items" db=4.6ms idle=337.3ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [21] 12:49:17.554 [debug] QUERY OK source="tasks" db=0.4ms idle=341.4ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [202886, 21, ~U[2026-01-03 01:49:17Z], ~U[2026-01-03 01:49:17Z]] 12:49:17.554 [info] {"args":{"id":21},"id":202862,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":505103,"event":"job:stop","queue_time":222138,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 12:49:17.630 [info] Sent 200 in 425ms 12:49:26.390 [info] GET /sources/14/media/55351 12:49:26.390 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "55351", "source_id" => "14"} Pipelines: [:browser] 12:49:26.391 [debug] QUERY OK source="media_items" db=0.4ms queue=0.1ms idle=1639.3ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [55351] 12:49:26.393 [debug] QUERY OK source="tasks" db=0.5ms queue=0.1ms idle=1640.3ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [55351] 12:49:26.393 [debug] QUERY OK source="sources" db=0.6ms queue=0.1ms idle=1640.4ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [14] 12:49:26.394 [debug] QUERY OK source="oban_jobs" db=0.2ms idle=1333.8ms SELECT o0."id", o0."state", o0."queue", o0."worker", o0."args", o0."meta", o0."tags", o0."errors", o0."attempt", o0."attempted_by", o0."max_attempts", o0."priority", o0."attempted_at", o0."cancelled_at", o0."completed_at", o0."discarded_at", o0."inserted_at", o0."scheduled_at", o0."id" FROM "oban_jobs" AS o0 WHERE (o0."id" = ?) [202048] 12:49:26.395 [debug] QUERY OK source="settings" db=0.2ms queue=0.2ms idle=332.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:49:26.396 [debug] QUERY OK source="settings" db=0.3ms idle=3.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:49:26.397 [debug] QUERY OK source="settings" db=0.4ms idle=3.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:49:26.399 [debug] QUERY OK source="media_profiles" db=0.2ms idle=5.5ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 12:49:26.403 [info] Sent 200 in 12ms 12:49:35.117 [info] GET /sources/22/media/21293 12:49:35.117 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "21293", "source_id" => "22"} Pipelines: [:browser] 12:49:35.119 [debug] QUERY OK source="media_items" db=0.8ms idle=1366.0ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [21293] 12:49:35.120 [debug] QUERY OK source="tasks" db=0.8ms queue=0.1ms idle=1367.3ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [21293] 12:49:35.120 [debug] QUERY OK source="sources" db=0.9ms idle=1367.4ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [22] 12:49:35.121 [debug] QUERY OK source="settings" db=0.2ms idle=1031.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:49:35.121 [debug] QUERY OK source="settings" db=0.1ms idle=29.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:49:35.122 [debug] QUERY OK source="settings" db=0.3ms idle=3.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:49:35.124 [debug] QUERY OK source="media_profiles" db=0.2ms idle=4.2ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 12:49:35.678 [info] Sent 200 in 561ms 12:49:42.417 [info] {"source":"oban","duration":2247,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:49:42.660 [info] GET /sources/13/media/12713 12:49:42.661 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "12713", "source_id" => "13"} Pipelines: [:browser] 12:49:42.662 [debug] QUERY OK source="media_items" db=0.9ms queue=0.1ms idle=1909.5ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [12713] 12:49:42.663 [debug] QUERY OK source="sources" db=0.7ms idle=1554.6ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [13] 12:49:42.663 [debug] QUERY OK source="tasks" db=0.8ms idle=1911.0ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [12713] 12:49:42.664 [debug] QUERY OK source="oban_jobs" db=0.4ms idle=553.2ms SELECT o0."id", o0."state", o0."queue", o0."worker", o0."args", o0."meta", o0."tags", o0."errors", o0."attempt", o0."attempted_by", o0."max_attempts", o0."priority", o0."attempted_at", o0."cancelled_at", o0."completed_at", o0."discarded_at", o0."inserted_at", o0."scheduled_at", o0."id" FROM "oban_jobs" AS o0 WHERE (o0."id" = ?) [202088] 12:49:42.665 [debug] QUERY OK source="settings" db=0.4ms idle=248.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:49:42.666 [debug] QUERY OK source="settings" db=0.4ms idle=3.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:49:42.667 [debug] QUERY OK source="settings" db=0.5ms idle=3.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:49:42.668 [debug] QUERY OK source="media_profiles" db=0.2ms idle=4.5ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 12:49:42.671 [info] Sent 200 in 10ms 12:49:49.580 [info] GET /sources/13/media/41133 12:49:49.580 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "41133", "source_id" => "13"} Pipelines: [:browser] 12:49:49.581 [debug] QUERY OK source="media_items" db=0.4ms idle=1828.7ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [41133] 12:49:49.582 [debug] QUERY OK source="tasks" db=0.7ms queue=0.1ms idle=1829.5ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [41133] 12:49:49.582 [debug] QUERY OK source="sources" db=0.7ms queue=0.1ms idle=1829.6ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [13] 12:49:49.583 [debug] QUERY OK source="settings" db=0.2ms idle=1453.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:49:49.584 [debug] QUERY OK source="settings" db=0.2ms idle=449.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:49:49.585 [debug] QUERY OK source="settings" db=0.5ms idle=3.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:49:49.587 [debug] QUERY OK source="media_profiles" db=0.3ms idle=4.5ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 12:49:50.030 [info] Sent 200 in 450ms 12:49:55.866 [info] GET /sources/11/media/58615 12:49:55.867 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "58615", "source_id" => "11"} Pipelines: [:browser] 12:49:55.868 [debug] QUERY OK source="media_items" db=0.7ms idle=1115.8ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [58615] 12:49:55.870 [debug] QUERY OK source="tasks" db=0.8ms queue=0.1ms idle=1117.2ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [58615] 12:49:55.870 [debug] QUERY OK source="sources" db=0.8ms idle=1117.3ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [11] 12:49:55.871 [debug] QUERY OK source="oban_jobs" db=0.4ms idle=1118.5ms SELECT o0."id", o0."state", o0."queue", o0."worker", o0."args", o0."meta", o0."tags", o0."errors", o0."attempt", o0."attempted_by", o0."max_attempts", o0."priority", o0."attempted_at", o0."cancelled_at", o0."completed_at", o0."discarded_at", o0."inserted_at", o0."scheduled_at", o0."id" FROM "oban_jobs" AS o0 WHERE (o0."id" = ?) [201991] 12:49:55.872 [debug] QUERY OK source="settings" db=0.3ms queue=0.1ms idle=721.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:49:55.872 [debug] QUERY OK source="settings" db=0.3ms idle=3.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:49:55.874 [debug] QUERY OK source="settings" db=0.3ms queue=0.1ms idle=3.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:49:55.876 [debug] QUERY OK source="media_profiles" db=0.3ms idle=5.5ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 12:49:56.304 [info] Sent 200 in 437ms 12:50:00.098 [info] {"source":"oban","duration":507,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 12:50:01.217 [info] GET /sources/11/media/56558 12:50:01.217 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "56558", "source_id" => "11"} Pipelines: [:browser] 12:50:01.218 [debug] QUERY OK source="media_items" db=0.7ms queue=0.1ms idle=1465.8ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [56558] 12:50:01.219 [debug] QUERY OK source="tasks" db=0.3ms idle=1467.1ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [56558] 12:50:01.220 [debug] QUERY OK source="sources" db=0.7ms idle=1120.8ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [11] 12:50:01.220 [debug] QUERY OK source="settings" db=0.1ms idle=1052.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:50:01.221 [debug] QUERY OK source="settings" db=0.2ms idle=47.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:50:01.221 [debug] QUERY OK source="settings" db=0.2ms idle=2.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:50:01.222 [debug] QUERY OK source="media_profiles" db=0.1ms idle=2.7ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 12:50:01.471 [info] Sent 200 in 254ms 12:50:06.244 [info] GET /sources/23/media/21392/force_download 12:50:06.245 [debug] QUERY OK source="settings" db=0.5ms queue=0.1ms idle=1492.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:50:06.246 [debug] QUERY OK source="settings" db=0.6ms idle=1493.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:50:06.246 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 12:50:06.246 [error] #PID<0.9017.0> running PinchflatWeb.Endpoint (connection #PID<0.9006.0>, stream id 3) terminated Server: pinchflat.uiau7e.uncld.dev:80 (http) Request: GET /sources/23/media/21392/force_download ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/23/media/21392/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.9006.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/23/media/21392/force_download", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 50660}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYbUpaVGpiZVV0ME5kVVFXajRlWkUyYlNh.OHMWuX1BmdE0WUffCZBYrUR784_9KXu0735DX3PXVxo", "from" => "gptbot(at)openai.com", "host" => "pinchflat.uiau7e.uncld.dev", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.3; +https://openai.com/gptbot)", "via" => "2.0 Caddy", "x-forwarded-for" => "74.7.227.183", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https", "x-openai-host-hash" => "454925582" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 3, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{ "_pinchflat_key" => "SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYbUpaVGpiZVV0ME5kVVFXajRlWkUyYlNh.OHMWuX1BmdE0WUffCZBYrUR784_9KXu0735DX3PXVxo" }, halted: false, host: "pinchflat.uiau7e.uncld.dev", method: "GET", owner: #PID<0.9017.0>, params: %{}, path_info: ["sources", "23", "media", "21392", "force_download"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.uiau7e.uncld.dev", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {10, 210, 0, 2}, req_cookies: %{ "_pinchflat_key" => "SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYbUpaVGpiZVV0ME5kVVFXajRlWkUyYlNh.OHMWuX1BmdE0WUffCZBYrUR784_9KXu0735DX3PXVxo" }, req_headers: [ {"accept", "*/*"}, {"accept-encoding", "gzip, br, deflate"}, {"cookie", "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYbUpaVGpiZVV0ME5kVVFXajRlWkUyYlNh.OHMWuX1BmdE0WUffCZBYrUR784_9KXu0735DX3PXVxo"}, {"from", "gptbot(at)openai.com"}, {"host", "pinchflat.uiau7e.uncld.dev"}, {"user-agent", "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.3; +https://openai.com/gptbot)"}, {"via", "2.0 Caddy"}, {"x-forwarded-for", "74.7.227.183"}, {"x-forwarded-host", "pinchflat.uiau7e.uncld.dev"}, {"x-forwarded-proto", "https"}, {"x-openai-host-hash", "454925582"} ], request_path: "/sources/23/media/21392/force_download", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GIcVfTNtF7rhhEAAAaKh"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.9006.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/23/media/21392/force_download", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 50660}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYbUpaVGpiZVV0ME5kVVFXajRlWkUyYlNh.OHMWuX1BmdE0WUffCZBYrUR784_9KXu0735DX3PXVxo", "from" => "gptbot(at)openai.com", "host" => "pinchflat.uiau7e.uncld.dev", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.3; +https://openai.com/gptbot)", "via" => "2.0 Caddy", "x-forwarded-for" => "74.7.227.183", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https", "x-openai-host-hash" => "454925582" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 3, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/23/media/21392/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.9006.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/23/media/21392/force_download", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 50660}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYbUpaVGpiZVV0ME5kVVFXajRlWkUyYlNh.OHMWuX1BmdE0WUffCZBYrUR784_9KXu0735DX3PXVxo", "from" => "gptbot(at)openai.com", "host" => "pinchflat.uiau7e.uncld.dev", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.3; +https://openai.com/gptbot)", "via" => "2.0 Caddy", "x-forwarded-for" => "74.7.227.183", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https", "x-openai-host-hash" => "454925582" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 3, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{ "_pinch (truncated) 12:50:10.756 [info] GET /sources/13/media/12721/force_download 12:50:10.757 [debug] QUERY OK source="settings" db=0.2ms queue=0.1ms idle=1005.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:50:10.758 [debug] QUERY OK source="settings" db=0.3ms idle=1005.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:50:10.758 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 12:50:10.759 [error] #PID<0.9018.0> running PinchflatWeb.Endpoint (connection #PID<0.9006.0>, stream id 4) terminated Server: pinchflat.uiau7e.uncld.dev:80 (http) Request: GET /sources/13/media/12721/force_download ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/13/media/12721/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.9006.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/13/media/12721/force_download", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 50660}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYbUpaVGpiZVV0ME5kVVFXajRlWkUyYlNh.OHMWuX1BmdE0WUffCZBYrUR784_9KXu0735DX3PXVxo", "from" => "gptbot(at)openai.com", "host" => "pinchflat.uiau7e.uncld.dev", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.3; +https://openai.com/gptbot)", "via" => "2.0 Caddy", "x-forwarded-for" => "74.7.227.183", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https", "x-openai-host-hash" => "454925582" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 4, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{ "_pinchflat_key" => "SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYbUpaVGpiZVV0ME5kVVFXajRlWkUyYlNh.OHMWuX1BmdE0WUffCZBYrUR784_9KXu0735DX3PXVxo" }, halted: false, host: "pinchflat.uiau7e.uncld.dev", method: "GET", owner: #PID<0.9018.0>, params: %{}, path_info: ["sources", "13", "media", "12721", "force_download"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.uiau7e.uncld.dev", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {10, 210, 0, 2}, req_cookies: %{ "_pinchflat_key" => "SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYbUpaVGpiZVV0ME5kVVFXajRlWkUyYlNh.OHMWuX1BmdE0WUffCZBYrUR784_9KXu0735DX3PXVxo" }, req_headers: [ {"accept", "*/*"}, {"accept-encoding", "gzip, br, deflate"}, {"cookie", "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYbUpaVGpiZVV0ME5kVVFXajRlWkUyYlNh.OHMWuX1BmdE0WUffCZBYrUR784_9KXu0735DX3PXVxo"}, {"from", "gptbot(at)openai.com"}, {"host", "pinchflat.uiau7e.uncld.dev"}, {"user-agent", "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.3; +https://openai.com/gptbot)"}, {"via", "2.0 Caddy"}, {"x-forwarded-for", "74.7.227.183"}, {"x-forwarded-host", "pinchflat.uiau7e.uncld.dev"}, {"x-forwarded-proto", "https"}, {"x-openai-host-hash", "454925582"} ], request_path: "/sources/13/media/12721/force_download", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GIcVfkBmppCs4PkAAaLB"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.9006.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/13/media/12721/force_download", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 50660}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYbUpaVGpiZVV0ME5kVVFXajRlWkUyYlNh.OHMWuX1BmdE0WUffCZBYrUR784_9KXu0735DX3PXVxo", "from" => "gptbot(at)openai.com", "host" => "pinchflat.uiau7e.uncld.dev", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.3; +https://openai.com/gptbot)", "via" => "2.0 Caddy", "x-forwarded-for" => "74.7.227.183", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https", "x-openai-host-hash" => "454925582" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 4, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/13/media/12721/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.9006.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/13/media/12721/force_download", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 50660}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYbUpaVGpiZVV0ME5kVVFXajRlWkUyYlNh.OHMWuX1BmdE0WUffCZBYrUR784_9KXu0735DX3PXVxo", "from" => "gptbot(at)openai.com", "host" => "pinchflat.uiau7e.uncld.dev", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.3; +https://openai.com/gptbot)", "via" => "2.0 Caddy", "x-forwarded-for" => "74.7.227.183", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https", "x-openai-host-hash" => "454925582" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 4, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{ "_pinch (truncated) 12:50:12.420 [info] {"source":"oban","duration":2479,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:50:23.597 [info] GET /sources/22/media/21285/force_download 12:50:23.598 [debug] QUERY OK source="settings" db=0.3ms idle=1364.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:50:23.598 [debug] QUERY OK source="settings" db=0.3ms idle=846.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:50:23.599 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 12:50:23.600 [error] #PID<0.9020.0> running PinchflatWeb.Endpoint (connection #PID<0.9019.0>, stream id 1) terminated Server: pinchflat.uiau7e.uncld.dev:80 (http) Request: GET /sources/22/media/21285/force_download ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/22/media/21285/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.9019.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/22/media/21285/force_download", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 57872}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYbUpaVGpiZVV0ME5kVVFXajRlWkUyYlNh.OHMWuX1BmdE0WUffCZBYrUR784_9KXu0735DX3PXVxo", "from" => "gptbot(at)openai.com", "host" => "pinchflat.uiau7e.uncld.dev", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.3; +https://openai.com/gptbot)", "via" => "2.0 Caddy", "x-forwarded-for" => "74.7.227.183", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https", "x-openai-host-hash" => "454925582" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{ "_pinchflat_key" => "SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYbUpaVGpiZVV0ME5kVVFXajRlWkUyYlNh.OHMWuX1BmdE0WUffCZBYrUR784_9KXu0735DX3PXVxo" }, halted: false, host: "pinchflat.uiau7e.uncld.dev", method: "GET", owner: #PID<0.9020.0>, params: %{}, path_info: ["sources", "22", "media", "21285", "force_download"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.uiau7e.uncld.dev", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {10, 210, 0, 2}, req_cookies: %{ "_pinchflat_key" => "SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYbUpaVGpiZVV0ME5kVVFXajRlWkUyYlNh.OHMWuX1BmdE0WUffCZBYrUR784_9KXu0735DX3PXVxo" }, req_headers: [ {"accept", "*/*"}, {"accept-encoding", "gzip, br, deflate"}, {"cookie", "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYbUpaVGpiZVV0ME5kVVFXajRlWkUyYlNh.OHMWuX1BmdE0WUffCZBYrUR784_9KXu0735DX3PXVxo"}, {"from", "gptbot(at)openai.com"}, {"host", "pinchflat.uiau7e.uncld.dev"}, {"user-agent", "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.3; +https://openai.com/gptbot)"}, {"via", "2.0 Caddy"}, {"x-forwarded-for", "74.7.227.183"}, {"x-forwarded-host", "pinchflat.uiau7e.uncld.dev"}, {"x-forwarded-proto", "https"}, {"x-openai-host-hash", "454925582"} ], request_path: "/sources/22/media/21285/force_download", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GIcVgT3EOCNFSvEAAaLh"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.9019.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/22/media/21285/force_download", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 57872}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYbUpaVGpiZVV0ME5kVVFXajRlWkUyYlNh.OHMWuX1BmdE0WUffCZBYrUR784_9KXu0735DX3PXVxo", "from" => "gptbot(at)openai.com", "host" => "pinchflat.uiau7e.uncld.dev", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.3; +https://openai.com/gptbot)", "via" => "2.0 Caddy", "x-forwarded-for" => "74.7.227.183", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https", "x-openai-host-hash" => "454925582" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/22/media/21285/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.9019.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/22/media/21285/force_download", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 57872}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYbUpaVGpiZVV0ME5kVVFXajRlWkUyYlNh.OHMWuX1BmdE0WUffCZBYrUR784_9KXu0735DX3PXVxo", "from" => "gptbot(at)openai.com", "host" => "pinchflat.uiau7e.uncld.dev", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.3; +https://openai.com/gptbot)", "via" => "2.0 Caddy", "x-forwarded-for" => "74.7.227.183", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https", "x-openai-host-hash" => "454925582" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{ "_pinch (truncated) 12:50:42.423 [info] {"source":"oban","duration":2299,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:51:00.100 [info] {"source":"oban","duration":385,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 12:51:04.461 [info] GET /sources/11/media/58575/force_download 12:51:04.463 [debug] QUERY OK source="settings" db=0.9ms idle=1710.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:51:04.464 [debug] QUERY OK source="settings" db=0.6ms idle=1098.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:51:04.464 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 12:51:04.465 [error] #PID<0.9025.0> running PinchflatWeb.Endpoint (connection #PID<0.9024.0>, stream id 1) terminated Server: pinchflat.uiau7e.uncld.dev:80 (http) Request: GET /sources/11/media/58575/force_download ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/11/media/58575/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.9024.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/11/media/58575/force_download", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 36840}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYbUpaVGpiZVV0ME5kVVFXajRlWkUyYlNh.OHMWuX1BmdE0WUffCZBYrUR784_9KXu0735DX3PXVxo", "from" => "gptbot(at)openai.com", "host" => "pinchflat.uiau7e.uncld.dev", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.3; +https://openai.com/gptbot)", "via" => "2.0 Caddy", "x-forwarded-for" => "74.7.227.183", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https", "x-openai-host-hash" => "454925582" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{ "_pinchflat_key" => "SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYbUpaVGpiZVV0ME5kVVFXajRlWkUyYlNh.OHMWuX1BmdE0WUffCZBYrUR784_9KXu0735DX3PXVxo" }, halted: false, host: "pinchflat.uiau7e.uncld.dev", method: "GET", owner: #PID<0.9025.0>, params: %{}, path_info: ["sources", "11", "media", "58575", "force_download"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.uiau7e.uncld.dev", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {10, 210, 0, 2}, req_cookies: %{ "_pinchflat_key" => "SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYbUpaVGpiZVV0ME5kVVFXajRlWkUyYlNh.OHMWuX1BmdE0WUffCZBYrUR784_9KXu0735DX3PXVxo" }, req_headers: [ {"accept", "*/*"}, {"accept-encoding", "gzip, br, deflate"}, {"cookie", "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYbUpaVGpiZVV0ME5kVVFXajRlWkUyYlNh.OHMWuX1BmdE0WUffCZBYrUR784_9KXu0735DX3PXVxo"}, {"from", "gptbot(at)openai.com"}, {"host", "pinchflat.uiau7e.uncld.dev"}, {"user-agent", "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.3; +https://openai.com/gptbot)"}, {"via", "2.0 Caddy"}, {"x-forwarded-for", "74.7.227.183"}, {"x-forwarded-host", "pinchflat.uiau7e.uncld.dev"}, {"x-forwarded-proto", "https"}, {"x-openai-host-hash", "454925582"} ], request_path: "/sources/11/media/58575/force_download", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GIcVisF10DdsCgUAAGvj"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.9024.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/11/media/58575/force_download", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 36840}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYbUpaVGpiZVV0ME5kVVFXajRlWkUyYlNh.OHMWuX1BmdE0WUffCZBYrUR784_9KXu0735DX3PXVxo", "from" => "gptbot(at)openai.com", "host" => "pinchflat.uiau7e.uncld.dev", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.3; +https://openai.com/gptbot)", "via" => "2.0 Caddy", "x-forwarded-for" => "74.7.227.183", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https", "x-openai-host-hash" => "454925582" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/11/media/58575/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.9024.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/11/media/58575/force_download", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 36840}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYbUpaVGpiZVV0ME5kVVFXajRlWkUyYlNh.OHMWuX1BmdE0WUffCZBYrUR784_9KXu0735DX3PXVxo", "from" => "gptbot(at)openai.com", "host" => "pinchflat.uiau7e.uncld.dev", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.3; +https://openai.com/gptbot)", "via" => "2.0 Caddy", "x-forwarded-for" => "74.7.227.183", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https", "x-openai-host-hash" => "454925582" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{ "_pinch (truncated) 12:51:12.425 [info] {"source":"oban","duration":1650,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:51:23.062 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=yP191TsAPME --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --embed-subs --sub-langs en --write-thumbnail --convert-thumbnail jpg --output thumbnail:/downloads/CodeSync/Season %(upload_date>%Y)S/s%(upload_date>%Y)Se%(upload_date>%m%d)S99 - %(title)S-thumb.%(ext)S --embed-thumbnail --convert-thumbnail jpg --write-info-json --clean-info-json --embed-metadata --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --sponsorblock-mark sponsor,intro,outro,selfpromo,preview,filler,interaction,music_offtopic --output /downloads/CodeSync/Season %(upload_date>%Y)S/s%(upload_date>%Y)Se%(upload_date>%m%d)S99 - %(title)S.%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/c9/7e/c97eda7066581f830049353f0047c3c110eddd69ce704323ee252debf9e6e433.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: WARNING: The extractor specified to use impersonation for this download, but no impersonate target is available. If you encounter errors, then see https://github.com/yt-dlp/yt-dlp#impersonation for information on installing the required dependencies 12:51:23.380 [debug] Running yt-dlp command for action: download_thumbnail 12:51:23.382 [debug] QUERY OK source="settings" db=0.2ms idle=1629.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:51:23.382 [debug] QUERY OK source="settings" db=0.2ms idle=1630.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:51:23.382 [debug] QUERY OK source="settings" db=0.1ms idle=1630.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:51:23.383 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=yP191TsAPME --no-simulate --skip-download --write-thumbnail --convert-thumbnail jpg --output /config/metadata/media_items/58799/thumbnail.%(ext)s --print-to-file after_move:%()j /tmp/pinchflat/data/4c/3f/4c3fd1f770586220bf7122c5dc26070d778f8bede5c0f9336061582940a6e233.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 12:51:31.038 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=yP191TsAPME --no-simulate --skip-download --write-thumbnail --convert-thumbnail jpg --output /config/metadata/media_items/58799/thumbnail.%(ext)s --print-to-file after_move:%()j /tmp/pinchflat/data/4c/3f/4c3fd1f770586220bf7122c5dc26070d778f8bede5c0f9336061582940a6e233.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 12:51:31.039 [debug] QUERY OK db=0.1ms idle=1287.5ms begin [] 12:51:31.041 [debug] QUERY OK source="media_items" db=1.2ms UPDATE "media_items" SET "media_downloaded_at" = ?, "media_filepath" = ?, "metadata_filepath" = ?, "nfo_filepath" = ?, "predicted_media_filepath" = ?, "subtitle_filepaths" = ?, "thumbnail_filepath" = ?, "updated_at" = ? WHERE "id" = ? [~U[2026-01-03 01:51:23Z], "/downloads/CodeSync/Season 2025/s2025e120299 - Introducing Phoenix Sync - James Arthur | ElixirConf EU 2025 | ElixirConf EU 2025.mp4", "/downloads/CodeSync/Season 2025/s2025e120299 - Introducing Phoenix Sync - James Arthur | ElixirConf EU 2025 | ElixirConf EU 2025.info.json", "/downloads/CodeSync/Season 2025/s2025e120299 - Introducing Phoenix Sync - James Arthur | ElixirConf EU 2025 | ElixirConf EU 2025.nfo", "/downloads/CodeSync/Season 2025/s2025e120299 - Introducing Phoenix Sync - James Arthur | ElixirConf EU 2025 | ElixirConf EU 2025.mp4", [["en", "/downloads/CodeSync/Season 2025/s2025e120299 - Introducing Phoenix Sync - James Arthur | ElixirConf EU 2025 | ElixirConf EU 2025.en.srt"]], "/downloads/CodeSync/Season 2025/s2025e120299 - Introducing Phoenix Sync - James Arthur | ElixirConf EU 2025 | ElixirConf EU 2025-thumb.jpg", ~U[2026-01-03 01:51:31Z], 58799] 12:51:31.043 [debug] QUERY OK source="media_metadata" db=1.0ms INSERT INTO "media_metadata" ("metadata_filepath","thumbnail_filepath","media_item_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5) RETURNING "id" ["/config/metadata/media_items/58799/metadata.json.gz", "/config/metadata/media_items/58799/thumbnail.jpg", 58799, ~U[2026-01-03 01:51:31Z], ~U[2026-01-03 01:51:31Z]] 12:51:31.044 [debug] QUERY OK db=0.8ms commit [] 12:51:31.770 [debug] QUERY OK source="media_items" db=334.6ms idle=988.4ms UPDATE "media_items" SET "media_size_bytes" = ?, "updated_at" = ? WHERE "id" = ? [287618386, ~U[2026-01-03 01:51:31Z], 58799] 12:51:31.771 [info] User scripts lifecyle file either not present or is empty. Skipping. 12:51:31.774 [info] {"args":{"id":58799},"id":202085,"meta":{},"state":"success","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":1006214530,"event":"job:stop","queue_time":18941553730,"attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 12:51:31.778 [info] {"args":{"id":8350},"id":202867,"meta":{},"system_time":1767405091777904057,"max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 12:51:31.779 [debug] QUERY OK source="media_items" db=0.8ms idle=733.9ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [8350] 12:51:31.779 [info] User scripts lifecyle file either not present or is empty. Skipping. 12:51:31.780 [debug] QUERY OK source="sources" db=0.7ms idle=8.8ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [7] 12:51:31.781 [debug] QUERY OK source="media_profiles" db=0.6ms idle=9.0ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 12:51:31.782 [debug] QUERY OK source="media_items" db=1.0ms idle=7.3ms SELECT 1 FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) LIMIT 1 [8350] 12:51:31.784 [debug] QUERY OK source="media_metadata" db=0.3ms idle=6.4ms SELECT m0."id", m0."metadata_filepath", m0."thumbnail_filepath", m0."media_item_id", m0."inserted_at", m0."updated_at", m0."media_item_id" FROM "media_metadata" AS m0 WHERE (m0."media_item_id" = ?) [8350] 12:51:31.785 [debug] QUERY OK source="media_profiles" db=0.6ms idle=5.8ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 12:51:31.786 [debug] QUERY OK source="settings" db=0.5ms idle=5.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:51:31.787 [debug] QUERY OK source="settings" db=0.2ms idle=5.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:51:31.788 [debug] Running yt-dlp command for action: get_downloadable_status 12:51:31.789 [debug] QUERY OK source="settings" db=0.3ms idle=6.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:51:31.790 [debug] QUERY OK source="settings" db=0.2ms idle=5.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:51:31.791 [debug] QUERY OK source="settings" db=0.2ms queue=0.1ms idle=5.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:51:31.791 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=aCES82xfgdw --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/fc/b5/fcb5a0822914ad675995f19f6c3417a092d9adcebe0a0d8167a7062e5d632d62.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 12:51:37.091 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=aCES82xfgdw --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/fc/b5/fcb5a0822914ad675995f19f6c3417a092d9adcebe0a0d8167a7062e5d632d62.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 1 with: ERROR: [youtube] aCES82xfgdw: Sign in to confirm your age. This video may be inappropriate for some users. Use --cookies-from-browser or --cookies for the authentication. See https://github.com/yt-dlp/yt-dlp/wiki/FAQ#how-do-i-pass-cookies-to-yt-dlp for how to manually pass cookies. Also see https://github.com/yt-dlp/yt-dlp/wiki/Extractors#exporting-youtube-cookies for tips on effectively exporting YouTube cookies 12:51:37.092 [debug] QUERY OK source="settings" db=0.3ms idle=1320.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:51:37.092 [debug] QUERY OK source="settings" db=0.5ms idle=1321.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:51:37.093 [debug] Running yt-dlp command for action: get_downloadable_status 12:51:37.096 [debug] QUERY OK source="settings" db=0.3ms idle=1324.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:51:37.096 [debug] QUERY OK source="settings" db=0.3ms idle=1312.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:51:37.097 [debug] QUERY OK source="settings" db=0.4ms idle=309.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:51:37.097 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=aCES82xfgdw --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/69/04/69042fcd0a93d4954e4e6d11dcec7c00c4295ee15b5b416742b332a013480271.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 12:51:42.429 [info] {"source":"oban","duration":2605,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:51:42.536 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=aCES82xfgdw --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/69/04/69042fcd0a93d4954e4e6d11dcec7c00c4295ee15b5b416742b332a013480271.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 1 with: ERROR: [youtube] aCES82xfgdw: Sign in to confirm your age. This video may be inappropriate for some users. Use --cookies-from-browser or --cookies for the authentication. See https://github.com/yt-dlp/yt-dlp/wiki/FAQ#how-do-i-pass-cookies-to-yt-dlp for how to manually pass cookies. Also see https://github.com/yt-dlp/yt-dlp/wiki/Extractors#exporting-youtube-cookies for tips on effectively exporting YouTube cookies 12:51:42.536 [error] yt-dlp download error for media item #8350: "ERROR: [youtube] aCES82xfgdw: Sign in to confirm your age. This video may be inappropriate for some users. Use --cookies-from-browser or --cookies for the authentication. See https://github.com/yt-dlp/yt-dlp/wiki/FAQ#how-do-i-pass-cookies-to-yt-dlp for how to manually pass cookies. Also see https://github.com/yt-dlp/yt-dlp/wiki/Extractors#exporting-youtube-cookies for tips on effectively exporting YouTube cookies\n" 12:51:42.536 [error] yt-dlp download will not be retried: "ERROR: [youtube] aCES82xfgdw: Sign in to confirm your age. This video may be inappropriate for some users. Use --cookies-from-browser or --cookies for the authentication. See https://github.com/yt-dlp/yt-dlp/wiki/FAQ#how-do-i-pass-cookies-to-yt-dlp for how to manually pass cookies. Also see https://github.com/yt-dlp/yt-dlp/wiki/Extractors#exporting-youtube-cookies for tips on effectively exporting YouTube cookies\n" 12:51:42.537 [info] {"args":{"id":8350},"id":202867,"meta":{},"state":"success","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":10758763,"event":"job:stop","queue_time":471776719,"attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 12:51:42.545 [info] {"args":{"id":8380},"id":202868,"meta":{},"system_time":1767405102545002006,"max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 12:51:42.546 [debug] QUERY OK source="media_items" db=0.5ms idle=1749.4ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [8380] 12:51:42.546 [info] User scripts lifecyle file either not present or is empty. Skipping. 12:51:42.546 [debug] QUERY OK source="sources" db=0.2ms idle=747.3ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [7] 12:51:42.547 [debug] QUERY OK source="media_profiles" db=0.2ms idle=117.7ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 12:51:42.548 [debug] QUERY OK source="media_items" db=0.3ms idle=9.8ms SELECT 1 FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) LIMIT 1 [8380] 12:51:42.550 [debug] QUERY OK source="media_metadata" db=0.3ms idle=4.6ms SELECT m0."id", m0."metadata_filepath", m0."thumbnail_filepath", m0."media_item_id", m0."inserted_at", m0."updated_at", m0."media_item_id" FROM "media_metadata" AS m0 WHERE (m0."media_item_id" = ?) [8380] 12:51:42.550 [debug] QUERY OK source="media_profiles" db=0.3ms idle=4.3ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 12:51:42.552 [debug] QUERY OK source="settings" db=0.2ms queue=0.1ms idle=5.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:51:42.553 [debug] QUERY OK source="settings" db=0.4ms queue=0.1ms idle=5.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:51:42.554 [debug] Running yt-dlp command for action: get_downloadable_status 12:51:42.555 [debug] QUERY OK source="settings" db=0.2ms queue=0.1ms idle=7.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:51:42.556 [debug] QUERY OK source="settings" db=0.2ms idle=6.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:51:42.557 [debug] QUERY OK source="settings" db=0.1ms queue=0.1ms idle=5.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:51:42.557 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=bhkmFO8DikY --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/ab/e5/abe5f4a60b02df590168306fa2f2119a884ef668de2de419061360fff51b599a.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 12:51:48.025 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=bhkmFO8DikY --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/ab/e5/abe5f4a60b02df590168306fa2f2119a884ef668de2de419061360fff51b599a.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 1 with: ERROR: [youtube] bhkmFO8DikY: Sign in to confirm your age. This video may be inappropriate for some users. Use --cookies-from-browser or --cookies for the authentication. See https://github.com/yt-dlp/yt-dlp/wiki/FAQ#how-do-i-pass-cookies-to-yt-dlp for how to manually pass cookies. Also see https://github.com/yt-dlp/yt-dlp/wiki/Extractors#exporting-youtube-cookies for tips on effectively exporting YouTube cookies 12:51:48.026 [debug] QUERY OK source="settings" db=0.2ms queue=0.1ms idle=254.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:51:48.026 [debug] QUERY OK source="settings" db=0.2ms queue=0.1ms idle=255.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:51:48.027 [debug] Running yt-dlp command for action: get_downloadable_status 12:51:48.028 [debug] QUERY OK source="settings" db=0.2ms idle=257.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:51:48.029 [debug] QUERY OK source="settings" db=0.2ms idle=257.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:51:48.029 [debug] QUERY OK source="settings" db=0.2ms idle=216.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:51:48.029 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=bhkmFO8DikY --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/c0/9e/c09e822d4d17954364a842ba20bcb0f0c4383f90107f20760970c708c70ca950.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 12:51:53.388 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=bhkmFO8DikY --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/c0/9e/c09e822d4d17954364a842ba20bcb0f0c4383f90107f20760970c708c70ca950.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 1 with: ERROR: [youtube] bhkmFO8DikY: Sign in to confirm your age. This video may be inappropriate for some users. Use --cookies-from-browser or --cookies for the authentication. See https://github.com/yt-dlp/yt-dlp/wiki/FAQ#how-do-i-pass-cookies-to-yt-dlp for how to manually pass cookies. Also see https://github.com/yt-dlp/yt-dlp/wiki/Extractors#exporting-youtube-cookies for tips on effectively exporting YouTube cookies 12:51:53.388 [error] yt-dlp download error for media item #8380: "ERROR: [youtube] bhkmFO8DikY: Sign in to confirm your age. This video may be inappropriate for some users. Use --cookies-from-browser or --cookies for the authentication. See https://github.com/yt-dlp/yt-dlp/wiki/FAQ#how-do-i-pass-cookies-to-yt-dlp for how to manually pass cookies. Also see https://github.com/yt-dlp/yt-dlp/wiki/Extractors#exporting-youtube-cookies for tips on effectively exporting YouTube cookies\n" 12:51:53.389 [error] yt-dlp download will not be retried: "ERROR: [youtube] bhkmFO8DikY: Sign in to confirm your age. This video may be inappropriate for some users. Use --cookies-from-browser or --cookies for the authentication. See https://github.com/yt-dlp/yt-dlp/wiki/FAQ#how-do-i-pass-cookies-to-yt-dlp for how to manually pass cookies. Also see https://github.com/yt-dlp/yt-dlp/wiki/Extractors#exporting-youtube-cookies for tips on effectively exporting YouTube cookies\n" 12:51:53.390 [info] {"args":{"id":8380},"id":202868,"meta":{},"state":"success","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":10844271,"event":"job:stop","queue_time":482543703,"attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 12:51:53.397 [info] {"args":{"id":8401},"id":202869,"meta":{},"system_time":1767405113397592803,"max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 12:51:53.398 [debug] QUERY OK source="media_items" db=0.3ms queue=0.1ms idle=1626.8ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [8401] 12:51:53.398 [info] User scripts lifecyle file either not present or is empty. Skipping. 12:51:53.399 [debug] QUERY OK source="sources" db=0.3ms idle=1573.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [7] 12:51:53.400 [debug] QUERY OK source="media_profiles" db=0.5ms idle=570.2ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 12:51:53.401 [debug] QUERY OK source="media_items" db=0.4ms idle=10.7ms SELECT 1 FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) LIMIT 1 [8401] 12:51:53.403 [debug] QUERY OK source="media_metadata" db=0.2ms idle=5.4ms SELECT m0."id", m0."metadata_filepath", m0."thumbnail_filepath", m0."media_item_id", m0."inserted_at", m0."updated_at", m0."media_item_id" FROM "media_metadata" AS m0 WHERE (m0."media_item_id" = ?) [8401] 12:51:53.403 [debug] QUERY OK source="media_profiles" db=0.4ms idle=4.7ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 12:51:53.405 [debug] QUERY OK source="settings" db=0.3ms queue=0.1ms idle=5.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:51:53.405 [debug] QUERY OK source="settings" db=0.3ms queue=0.1ms idle=5.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:51:53.406 [debug] Running yt-dlp command for action: get_downloadable_status 12:51:53.408 [debug] QUERY OK source="settings" db=0.3ms idle=6.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:51:53.409 [debug] QUERY OK source="settings" db=0.3ms queue=0.1ms idle=5.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:51:53.409 [debug] QUERY OK source="settings" db=0.3ms idle=5.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:51:53.410 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=ZWSj0M132e8 --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/c8/3d/c83db93e0a8c7697f2bb5c4eecd4f64173e27b8b28019e80ac7db2d2e766cbdf.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 12:51:59.050 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=ZWSj0M132e8 --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/c8/3d/c83db93e0a8c7697f2bb5c4eecd4f64173e27b8b28019e80ac7db2d2e766cbdf.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 1 with: ERROR: [youtube] ZWSj0M132e8: Sign in to confirm your age. This video may be inappropriate for some users. Use --cookies-from-browser or --cookies for the authentication. See https://github.com/yt-dlp/yt-dlp/wiki/FAQ#how-do-i-pass-cookies-to-yt-dlp for how to manually pass cookies. Also see https://github.com/yt-dlp/yt-dlp/wiki/Extractors#exporting-youtube-cookies for tips on effectively exporting YouTube cookies 12:51:59.052 [debug] QUERY OK source="settings" db=0.6ms idle=280.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:51:59.052 [debug] QUERY OK source="settings" db=0.3ms queue=0.1ms idle=281.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:51:59.053 [debug] Running yt-dlp command for action: get_downloadable_status 12:51:59.055 [debug] QUERY OK source="settings" db=0.3ms idle=284.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:51:59.056 [debug] QUERY OK source="settings" db=0.2ms idle=284.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:51:59.056 [debug] QUERY OK source="settings" db=0.2ms idle=209.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:51:59.056 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=ZWSj0M132e8 --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/74/d2/74d2d34835d3b0ee4a0e09ab52fc9240af1f1fa308aeca5552c2b3c05f1d330b.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 12:52:00.102 [info] {"source":"oban","duration":1662,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 12:52:04.463 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=ZWSj0M132e8 --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/74/d2/74d2d34835d3b0ee4a0e09ab52fc9240af1f1fa308aeca5552c2b3c05f1d330b.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 1 with: ERROR: [youtube] ZWSj0M132e8: Sign in to confirm your age. This video may be inappropriate for some users. Use --cookies-from-browser or --cookies for the authentication. See https://github.com/yt-dlp/yt-dlp/wiki/FAQ#how-do-i-pass-cookies-to-yt-dlp for how to manually pass cookies. Also see https://github.com/yt-dlp/yt-dlp/wiki/Extractors#exporting-youtube-cookies for tips on effectively exporting YouTube cookies 12:52:04.464 [error] yt-dlp download error for media item #8401: "ERROR: [youtube] ZWSj0M132e8: Sign in to confirm your age. This video may be inappropriate for some users. Use --cookies-from-browser or --cookies for the authentication. See https://github.com/yt-dlp/yt-dlp/wiki/FAQ#how-do-i-pass-cookies-to-yt-dlp for how to manually pass cookies. Also see https://github.com/yt-dlp/yt-dlp/wiki/Extractors#exporting-youtube-cookies for tips on effectively exporting YouTube cookies\n" 12:52:04.464 [error] yt-dlp download will not be retried: "ERROR: [youtube] ZWSj0M132e8: Sign in to confirm your age. This video may be inappropriate for some users. Use --cookies-from-browser or --cookies for the authentication. See https://github.com/yt-dlp/yt-dlp/wiki/FAQ#how-do-i-pass-cookies-to-yt-dlp for how to manually pass cookies. Also see https://github.com/yt-dlp/yt-dlp/wiki/Extractors#exporting-youtube-cookies for tips on effectively exporting YouTube cookies\n" 12:52:04.465 [info] {"args":{"id":8401},"id":202869,"meta":{},"state":"success","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":11066840,"event":"job:stop","queue_time":493395832,"attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 12:52:04.474 [info] {"args":{"id":8418},"id":202870,"meta":{},"system_time":1767405124474135455,"max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 12:52:04.475 [debug] QUERY OK source="media_items" db=0.7ms idle=1615.3ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [8418] 12:52:04.475 [info] User scripts lifecyle file either not present or is empty. Skipping. 12:52:04.476 [debug] QUERY OK source="sources" db=0.6ms idle=704.7ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [7] 12:52:04.477 [debug] QUERY OK source="media_profiles" db=0.5ms idle=613.9ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 12:52:04.478 [debug] QUERY OK source="media_items" db=1.1ms idle=11.8ms SELECT 1 FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) LIMIT 1 [8418] 12:52:04.480 [debug] QUERY OK source="media_metadata" db=0.2ms idle=6.5ms SELECT m0."id", m0."metadata_filepath", m0."thumbnail_filepath", m0."media_item_id", m0."inserted_at", m0."updated_at", m0."media_item_id" FROM "media_metadata" AS m0 WHERE (m0."media_item_id" = ?) [8418] 12:52:04.481 [debug] QUERY OK source="media_profiles" db=0.7ms idle=5.7ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 12:52:04.482 [debug] QUERY OK source="settings" db=0.5ms idle=5.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:52:04.483 [debug] QUERY OK source="settings" db=0.4ms idle=5.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:52:04.484 [debug] Running yt-dlp command for action: get_downloadable_status 12:52:04.485 [debug] QUERY OK source="settings" db=0.2ms idle=6.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:52:04.486 [debug] QUERY OK source="settings" db=0.2ms idle=4.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:52:04.486 [debug] QUERY OK source="settings" db=0.3ms idle=4.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:52:04.486 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=v6jHhzj08yQ --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/2d/15/2d15847dbc415fc0c05054a86961ee1ed8bb1aa320db28ba42b06074ef1307a5.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 12:52:08.623 [info] GET /sources/22/media/21274/force_download 12:52:08.625 [debug] QUERY OK source="settings" db=1.0ms queue=0.1ms idle=852.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:52:08.626 [debug] QUERY OK source="settings" db=0.6ms queue=0.1ms idle=854.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:52:08.626 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 12:52:08.627 [error] #PID<0.9052.0> running PinchflatWeb.Endpoint (connection #PID<0.9051.0>, stream id 1) terminated Server: pinchflat.uiau7e.uncld.dev:80 (http) Request: GET /sources/22/media/21274/force_download ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/22/media/21274/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.9051.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/22/media/21274/force_download", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 37422}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYbUpaVGpiZVV0ME5kVVFXajRlWkUyYlNh.OHMWuX1BmdE0WUffCZBYrUR784_9KXu0735DX3PXVxo", "from" => "gptbot(at)openai.com", "host" => "pinchflat.uiau7e.uncld.dev", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.3; +https://openai.com/gptbot)", "via" => "2.0 Caddy", "x-forwarded-for" => "74.7.227.183", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https", "x-openai-host-hash" => "454925582" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{ "_pinchflat_key" => "SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYbUpaVGpiZVV0ME5kVVFXajRlWkUyYlNh.OHMWuX1BmdE0WUffCZBYrUR784_9KXu0735DX3PXVxo" }, halted: false, host: "pinchflat.uiau7e.uncld.dev", method: "GET", owner: #PID<0.9052.0>, params: %{}, path_info: ["sources", "22", "media", "21274", "force_download"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.uiau7e.uncld.dev", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {10, 210, 0, 2}, req_cookies: %{ "_pinchflat_key" => "SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYbUpaVGpiZVV0ME5kVVFXajRlWkUyYlNh.OHMWuX1BmdE0WUffCZBYrUR784_9KXu0735DX3PXVxo" }, req_headers: [ {"accept", "*/*"}, {"accept-encoding", "gzip, br, deflate"}, {"cookie", "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYbUpaVGpiZVV0ME5kVVFXajRlWkUyYlNh.OHMWuX1BmdE0WUffCZBYrUR784_9KXu0735DX3PXVxo"}, {"from", "gptbot(at)openai.com"}, {"host", "pinchflat.uiau7e.uncld.dev"}, {"user-agent", "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.3; +https://openai.com/gptbot)"}, {"via", "2.0 Caddy"}, {"x-forwarded-for", "74.7.227.183"}, {"x-forwarded-host", "pinchflat.uiau7e.uncld.dev"}, {"x-forwarded-proto", "https"}, {"x-openai-host-hash", "454925582"} ], request_path: "/sources/22/media/21274/force_download", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GIcVmbHJX5pSC5kAAaNh"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.9051.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/22/media/21274/force_download", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 37422}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYbUpaVGpiZVV0ME5kVVFXajRlWkUyYlNh.OHMWuX1BmdE0WUffCZBYrUR784_9KXu0735DX3PXVxo", "from" => "gptbot(at)openai.com", "host" => "pinchflat.uiau7e.uncld.dev", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.3; +https://openai.com/gptbot)", "via" => "2.0 Caddy", "x-forwarded-for" => "74.7.227.183", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https", "x-openai-host-hash" => "454925582" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/22/media/21274/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.9051.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/22/media/21274/force_download", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 37422}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYbUpaVGpiZVV0ME5kVVFXajRlWkUyYlNh.OHMWuX1BmdE0WUffCZBYrUR784_9KXu0735DX3PXVxo", "from" => "gptbot(at)openai.com", "host" => "pinchflat.uiau7e.uncld.dev", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.3; +https://openai.com/gptbot)", "via" => "2.0 Caddy", "x-forwarded-for" => "74.7.227.183", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https", "x-openai-host-hash" => "454925582" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{ "_pinch (truncated) 12:52:09.777 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=v6jHhzj08yQ --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/2d/15/2d15847dbc415fc0c05054a86961ee1ed8bb1aa320db28ba42b06074ef1307a5.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 1 with: ERROR: [youtube] v6jHhzj08yQ: Sign in to confirm your age. This video may be inappropriate for some users. Use --cookies-from-browser or --cookies for the authentication. See https://github.com/yt-dlp/yt-dlp/wiki/FAQ#how-do-i-pass-cookies-to-yt-dlp for how to manually pass cookies. Also see https://github.com/yt-dlp/yt-dlp/wiki/Extractors#exporting-youtube-cookies for tips on effectively exporting YouTube cookies 12:52:09.778 [debug] QUERY OK source="settings" db=0.2ms queue=0.2ms idle=900.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:52:09.779 [debug] QUERY OK source="settings" db=0.1ms queue=0.1ms idle=8.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:52:09.780 [debug] Running yt-dlp command for action: get_downloadable_status 12:52:09.781 [debug] QUERY OK source="settings" db=0.2ms idle=10.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:52:09.782 [debug] QUERY OK source="settings" db=0.1ms idle=10.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:52:09.782 [debug] QUERY OK source="settings" db=0.1ms idle=11.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:52:09.783 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=v6jHhzj08yQ --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/b0/ba/b0ba33a4542c1497630754d9b66fc73babf74e9d8ae0aff7c6f79673a691630e.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 12:52:10.891 [info] {"args":{"id":19},"id":202863,"meta":{},"system_time":1767405130891207177,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 12:52:10.892 [debug] QUERY OK source="sources" db=0.3ms idle=1109.7ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [19] 12:52:10.893 [debug] QUERY OK source="settings" db=0.2ms idle=1110.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:52:10.893 [debug] QUERY OK source="media_profiles" db=0.5ms idle=1012.6ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 12:52:10.894 [debug] QUERY OK source="settings" db=0.3ms queue=0.1ms idle=10.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:52:10.894 [debug] Fetching recent media IDs from YouTube API for playlist: UUaYhH3F6iB3KyW3afTHk5XA 12:52:10.895 [debug] QUERY OK source="settings" db=0.2ms idle=3.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:52:10.895 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 12:52:11.446 [debug] QUERY OK source="media_items" db=2.9ms idle=550.5ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND m0."media_id" IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [19, "mUlKcxGWvrQ", "ydfuNK4wSik", "x6cNQykYdEM", "SvyVS7zvquc", "l4O2F-1BWVI", "LYXADYUSTSg", "HpL40FdPGqk", "Wre5VWHxSug", "PdUu77SAH0I", "VCflrtok9hQ", "haEa6h8Ptf0", "c_-f7G9VSPw", "7rSLcNznix4", "OLXr-B-xwY8", "X05FPJq6_Oc", "kuL-trgOvq8", "WpBEifN8BYw", "YETks_YtraY", "bwKKd4N8Q2E", "PpNfOqbt0a8", "GyifuiQ6p48", "SkoFBCBASto", "-GNid2M6IC8", "muehDmLuJSw", "nBx5yssxPDk", "Q6vzDo6it9o", "AH9Z6_PlKhA", "dZfthyLyjDk", "j9UuSMaqX9Q", "jmoVFLUvyD0", "tKm_pnNEDsc", "boVAiizeh1M", "FNtBH6k7Jmo", "MDhN5WGOJ_o", "P-UQX5L_Ff0", "kys3lRzOOEY", "VDHSC2Dl8f0", "JU0uEdyPKlE", "0sSWAzq7rjc", "HOLXNrjWeuo"] 12:52:11.451 [debug] QUERY OK source="media_items" db=1.3ms idle=556.5ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [19] 12:52:11.455 [debug] QUERY OK source="tasks" db=0.9ms queue=0.1ms idle=559.2ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [202887, 19, ~U[2026-01-03 01:52:11Z], ~U[2026-01-03 01:52:11Z]] 12:52:11.456 [info] {"args":{"id":19},"id":202863,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":564557,"event":"job:stop","queue_time":586231,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 12:52:11.895 [info] {"args":{"id":23},"id":202864,"meta":{},"system_time":1767405131895593339,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 12:52:11.897 [debug] QUERY OK source="sources" db=1.0ms idle=440.5ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [23] 12:52:11.899 [debug] QUERY OK source="settings" db=0.3ms queue=0.4ms idle=441.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:52:11.899 [debug] QUERY OK source="media_profiles" db=0.4ms queue=0.1ms idle=435.2ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 12:52:11.900 [debug] QUERY OK source="settings" db=0.4ms queue=0.1ms idle=11.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:52:11.900 [debug] Fetching recent media IDs from YouTube API for playlist: UUSHvlfXUGYGWmDBg-afA5Bg 12:52:11.901 [debug] QUERY OK source="settings" db=0.3ms queue=0.1ms idle=5.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:52:11.901 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 12:52:12.233 [debug] QUERY OK source="media_items" db=2.8ms idle=333.0ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND m0."media_id" IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [23, "QASZbKPkS08", "pr7MMAFzHe8", "DG0BSdc6kKg", "o7DJZCU8q34", "G5A2QGwRmS4", "PER4GK9LCTA", "GzIS1WZFKtc", "24P4MFV-HrM", "6x6df3uagb4", "vALU9LhFKhE", "KF1grNBv5hU", "SLSPmp8-tXE", "53liPfHBgYQ", "zykmoM0qjbA", "boyfPk5qdBM", "H2VYuo7yb2o", "75_mYLpHDr4", "PSnlGB9aKVI", "vFBFSi2XqrQ", "X2z1ugOwR2A", "ePV6FKD1J9U", "ipxj_tl_6XY", "6l9-ctzSbCo", "xu3DTyCW3Yk", "wpAt0QaSk7U", "NXy9Sg0KIMY", "ml5AG_Q0y6w", "h_Uq6-e06y8", "37_rLteuwG4", "QCbf0kOJ8lA"] 12:52:12.236 [debug] QUERY OK source="media_items" db=1.6ms idle=335.3ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [23] 12:52:12.238 [debug] QUERY OK source="tasks" db=0.4ms idle=336.7ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [202888, 23, ~U[2026-01-03 01:52:12Z], ~U[2026-01-03 01:52:12Z]] 12:52:12.239 [info] {"args":{"id":23},"id":202864,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":343358,"event":"job:stop","queue_time":820568,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 12:52:12.432 [info] {"source":"oban","duration":2718,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:52:12.902 [info] {"args":{"id":25},"id":202865,"meta":{},"system_time":1767405132901887964,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 12:52:12.903 [debug] QUERY OK source="sources" db=1.5ms idle=662.7ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [25] 12:52:12.905 [debug] QUERY OK source="settings" db=0.7ms queue=0.2ms idle=656.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:52:12.906 [debug] QUERY OK source="media_profiles" db=0.9ms queue=0.1ms idle=473.2ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 12:52:12.907 [debug] QUERY OK source="settings" db=0.4ms queue=0.1ms idle=13.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:52:12.908 [debug] Fetching recent media IDs from YouTube API for playlist: UUWstkeBSSIEgw6n5qnlXXuA 12:52:12.909 [debug] QUERY OK source="settings" db=0.6ms queue=0.1ms idle=6.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:52:12.909 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 12:52:13.249 [debug] QUERY OK source="media_items" db=1.4ms idle=344.4ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND m0."media_id" IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [25, "_sYSZI--9TA", "T7P86y4vYKs", "qWpf9ysgE04", "81v7r86tRRE", "a3LYS6jzPKA", "o5UKHwwdhmA", "6CCxzLKCHYA", "VONzFNo8uW4", "jJUysp-6qBs", "3KzmAquL3e4", "5cgK_MdFz7s", "bHpsXfutTFY", "kVhFNQj86Ng", "nyd40ZDhRw4"] 12:52:13.251 [debug] QUERY OK source="media_items" db=0.9ms idle=345.3ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [25] 12:52:13.255 [debug] QUERY OK source="tasks" db=0.6ms idle=345.0ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [202889, 25, ~U[2026-01-03 01:52:13Z], ~U[2026-01-03 01:52:13Z]] 12:52:13.256 [info] {"args":{"id":25},"id":202865,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":353335,"event":"job:stop","queue_time":779914,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 12:52:13.904 [info] {"args":{"id":17},"id":202866,"meta":{},"system_time":1767405133904421660,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 12:52:13.905 [debug] QUERY OK source="sources" db=0.3ms queue=0.1ms idle=649.7ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [17] 12:52:13.906 [debug] QUERY OK source="settings" db=0.3ms queue=0.1ms idle=649.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:52:13.907 [debug] QUERY OK source="media_profiles" db=0.6ms idle=642.3ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 12:52:13.907 [debug] QUERY OK source="settings" db=0.4ms idle=10.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:52:13.907 [debug] Fetching recent media IDs from YouTube API for playlist: UUEIwxahdLz7bap-VDs9h35A 12:52:13.908 [debug] QUERY OK source="settings" db=0.4ms queue=0.1ms idle=3.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:52:13.908 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 12:52:14.235 [debug] QUERY OK source="media_items" db=2.7ms idle=326.9ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND m0."media_id" IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [17, "kuMUquaeE6g", "-NzfTE8RI4w", "2eiYALLYBFE", "J_vXK9uvRf4", "tRDxBwverlI", "ymlNErMdI2k", "hM1l19H0tX8", "qg01MgiVT9k", "a3l6FdpltbQ", "NtZaP8VMv0c", "ayicYezINas", "zoTuSOEOvPw", "U7NHNT3M-tw", "B_PCZiNlmPw", "5glksNTKkZI", "iDsb-pxE3fA", "7PJi9KSDVbQ", "CfhsW1kaa2Q", "pleHURTV6fU", "T47s4L1Wje4", "LLlghvxVoH0", "K4542wtX8B4", "rf-efIZI_Dg", "OXvdwc6NDqM", "nGEHUbTtpPY", "0FybegjTkgw", "3TgdCWBV0pg", "Qjd4CREfYbo", "pqnyUemUDF4", "6-FQSEVc_cs", "BvoDuNZ9gLA", "AjJfefo41M8", "dJSGJ1-9XWw", "Mcg9GcilBfU", "MQSwyrjTV2M", "o-dZKBwbsis", "matUCqoiSGk", "0_VdGzEk5-M", "PAOpkv0fpik", "VdwSMytC7y4", "tw5tQPm-B00", "vkD3-msLIHg", "INq7pAmaUuk", "mfTVxFapdLw", "kY2YeM5fNDw", "lkWRiks6luc", "yiCM_i8r4RM", "XzBMFsZT5gM", "dKN6XatdVkY", ...] 12:52:14.240 [debug] QUERY OK source="media_items" db=3.2ms idle=330.9ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [17] 12:52:14.243 [debug] QUERY OK source="tasks" db=0.3ms idle=334.2ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [202890, 17, ~U[2026-01-03 01:52:14Z], ~U[2026-01-03 01:52:14Z]] 12:52:14.243 [info] {"args":{"id":17},"id":202866,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":338835,"event":"job:stop","queue_time":760312,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 12:52:15.049 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=v6jHhzj08yQ --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/b0/ba/b0ba33a4542c1497630754d9b66fc73babf74e9d8ae0aff7c6f79673a691630e.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 1 with: ERROR: [youtube] v6jHhzj08yQ: Sign in to confirm your age. This video may be inappropriate for some users. Use --cookies-from-browser or --cookies for the authentication. See https://github.com/yt-dlp/yt-dlp/wiki/FAQ#how-do-i-pass-cookies-to-yt-dlp for how to manually pass cookies. Also see https://github.com/yt-dlp/yt-dlp/wiki/Extractors#exporting-youtube-cookies for tips on effectively exporting YouTube cookies 12:52:15.050 [error] yt-dlp download error for media item #8418: "ERROR: [youtube] v6jHhzj08yQ: Sign in to confirm your age. This video may be inappropriate for some users. Use --cookies-from-browser or --cookies for the authentication. See https://github.com/yt-dlp/yt-dlp/wiki/FAQ#how-do-i-pass-cookies-to-yt-dlp for how to manually pass cookies. Also see https://github.com/yt-dlp/yt-dlp/wiki/Extractors#exporting-youtube-cookies for tips on effectively exporting YouTube cookies\n" 12:52:15.050 [error] yt-dlp download will not be retried: "ERROR: [youtube] v6jHhzj08yQ: Sign in to confirm your age. This video may be inappropriate for some users. Use --cookies-from-browser or --cookies for the authentication. See https://github.com/yt-dlp/yt-dlp/wiki/FAQ#how-do-i-pass-cookies-to-yt-dlp for how to manually pass cookies. Also see https://github.com/yt-dlp/yt-dlp/wiki/Extractors#exporting-youtube-cookies for tips on effectively exporting YouTube cookies\n" 12:52:15.050 [info] {"args":{"id":8418},"id":202870,"meta":{},"state":"success","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":10576111,"event":"job:stop","queue_time":504471711,"attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 12:52:15.058 [info] {"args":{"id":12713},"id":202088,"meta":{},"system_time":1767405135058353881,"max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 12:52:15.059 [debug] QUERY OK source="media_items" db=0.4ms idle=815.1ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [12713] 12:52:15.059 [info] User scripts lifecyle file either not present or is empty. Skipping. 12:52:15.060 [debug] QUERY OK source="sources" db=0.6ms idle=808.7ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [13] 12:52:15.061 [debug] QUERY OK source="media_profiles" db=0.5ms idle=161.3ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 12:52:15.062 [debug] QUERY OK source="media_items" db=0.4ms idle=10.8ms SELECT 1 FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) LIMIT 1 [12713] 12:52:15.063 [debug] QUERY OK source="media_metadata" db=0.1ms idle=5.1ms SELECT m0."id", m0."metadata_filepath", m0."thumbnail_filepath", m0."media_item_id", m0."inserted_at", m0."updated_at", m0."media_item_id" FROM "media_metadata" AS m0 WHERE (m0."media_item_id" = ?) [12713] 12:52:15.064 [debug] QUERY OK source="media_profiles" db=0.2ms idle=4.3ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 12:52:15.064 [debug] QUERY OK source="settings" db=0.4ms idle=4.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:52:15.065 [debug] QUERY OK source="settings" db=0.2ms idle=3.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:52:15.065 [debug] Running yt-dlp command for action: get_downloadable_status 12:52:15.067 [debug] QUERY OK source="settings" db=0.1ms idle=4.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:52:15.067 [debug] QUERY OK source="settings" db=0.1ms idle=3.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:52:15.067 [debug] QUERY OK source="settings" db=0.1ms idle=3.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:52:15.067 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=75S0OsjKUGQ --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/a3/f9/a3f9ab0e410669176931d11d9d36d013cee92d45aff60df951c566d7aa280f80.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 12:52:19.931 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=75S0OsjKUGQ --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/a3/f9/a3f9ab0e410669176931d11d9d36d013cee92d45aff60df951c566d7aa280f80.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 1 with: ERROR: [youtube] 75S0OsjKUGQ: This video is available to this channel's members on level: Full Course Access (or any higher level). Join this channel to get access to members-only content and other exclusive perks. 12:52:19.932 [debug] QUERY OK source="settings" db=0.8ms idle=1160.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:52:19.933 [debug] QUERY OK source="settings" db=0.4ms idle=1161.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:52:19.934 [debug] Running yt-dlp command for action: get_downloadable_status 12:52:19.936 [debug] QUERY OK source="settings" db=0.5ms idle=1164.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:52:19.936 [debug] QUERY OK source="settings" db=0.4ms idle=1023.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:52:19.937 [debug] QUERY OK source="settings" db=0.4ms idle=21.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:52:19.938 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=75S0OsjKUGQ --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/ab/46/ab46ff08db23b72b80de2a9fbe5b22ba2d375352bd4c4f2aae2eb7fc4a127963.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 12:52:24.661 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=75S0OsjKUGQ --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/ab/46/ab46ff08db23b72b80de2a9fbe5b22ba2d375352bd4c4f2aae2eb7fc4a127963.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 1 with: ERROR: [youtube] 75S0OsjKUGQ: This video is available to this channel's members on level: Full Course Access (or any higher level). Join this channel to get access to members-only content and other exclusive perks. 12:52:24.661 [error] yt-dlp download error for media item #12713: "ERROR: [youtube] 75S0OsjKUGQ: This video is available to this channel's members on level: Full Course Access (or any higher level). Join this channel to get access to members-only content and other exclusive perks.\n" 12:52:24.665 [debug] QUERY OK source="media_items" db=4.1ms queue=0.1ms idle=890.4ms UPDATE "media_items" SET "last_error" = ?, "updated_at" = ? WHERE "id" = ? ["ERROR: [youtube] 75S0OsjKUGQ: This video is available to this channel's members on level: Full Course Access (or any higher level). Join this channel to get access to members-only content and other exclusive perks.\n", ~U[2026-01-03 01:52:24Z], 12713] 12:52:24.665 [error] yt-dlp download will not be retried: "ERROR: [youtube] 75S0OsjKUGQ: This video is available to this channel's members on level: Full Course Access (or any higher level). Join this channel to get access to members-only content and other exclusive perks.\n" 12:52:24.666 [info] {"args":{"id":12713},"id":202088,"meta":{},"state":"success","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":9607674,"event":"job:stop","queue_time":19966056758,"attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 12:52:24.673 [info] {"args":{"id":12865},"id":202099,"meta":{},"system_time":1767405144673839843,"max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 12:52:24.674 [debug] QUERY OK source="media_items" db=0.2ms idle=902.8ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [12865] 12:52:24.674 [info] User scripts lifecyle file either not present or is empty. Skipping. 12:52:24.675 [debug] QUERY OK source="sources" db=0.6ms queue=0.1ms idle=746.5ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [13] 12:52:24.676 [debug] QUERY OK source="media_profiles" db=0.6ms idle=10.2ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 12:52:24.677 [debug] QUERY OK source="media_items" db=0.8ms idle=10.3ms SELECT 1 FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) LIMIT 1 [12865] 12:52:24.679 [debug] QUERY OK source="media_metadata" db=0.3ms idle=5.8ms SELECT m0."id", m0."metadata_filepath", m0."thumbnail_filepath", m0."media_item_id", m0."inserted_at", m0."updated_at", m0."media_item_id" FROM "media_metadata" AS m0 WHERE (m0."media_item_id" = ?) [12865] 12:52:24.680 [debug] QUERY OK source="media_profiles" db=0.5ms idle=5.5ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 12:52:24.681 [debug] QUERY OK source="settings" db=0.2ms idle=5.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:52:24.681 [debug] QUERY OK source="settings" db=0.2ms idle=4.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:52:24.682 [debug] Running yt-dlp command for action: get_downloadable_status 12:52:24.684 [debug] QUERY OK source="settings" db=0.3ms idle=5.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:52:24.684 [debug] QUERY OK source="settings" db=0.3ms idle=4.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:52:24.684 [debug] QUERY OK source="settings" db=0.3ms idle=3.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:52:24.685 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=rW6hwfPFolw --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/c0/4e/c04e6f2953f438be61c68830c1690d9b554ce27ed581075bbc5c7932e31a7bc8.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 12:52:29.423 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=rW6hwfPFolw --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/c0/4e/c04e6f2953f438be61c68830c1690d9b554ce27ed581075bbc5c7932e31a7bc8.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 1 with: ERROR: [youtube] rW6hwfPFolw: This video is available to this channel's members on level: Channel Member (or any higher level). Join this channel to get access to members-only content and other exclusive perks. 12:52:29.424 [debug] QUERY OK source="settings" db=0.5ms queue=0.1ms idle=1653.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:52:29.425 [debug] QUERY OK source="settings" db=0.3ms queue=0.1ms idle=1654.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:52:29.426 [debug] Running yt-dlp command for action: get_downloadable_status 12:52:29.428 [debug] QUERY OK source="settings" db=0.2ms idle=1656.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:52:29.428 [debug] QUERY OK source="settings" db=0.2ms idle=1483.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:52:29.428 [debug] QUERY OK source="settings" db=0.2ms idle=479.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:52:29.429 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=rW6hwfPFolw --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/81/74/8174ccfe4472695321c0b188555a14b0d9859f7617149e267ecb3396d1dade8b.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 12:52:34.172 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=rW6hwfPFolw --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/81/74/8174ccfe4472695321c0b188555a14b0d9859f7617149e267ecb3396d1dade8b.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 1 with: ERROR: [youtube] rW6hwfPFolw: This video is available to this channel's members on level: Channel Member (or any higher level). Join this channel to get access to members-only content and other exclusive perks. 12:52:34.174 [error] yt-dlp download error for media item #12865: "ERROR: [youtube] rW6hwfPFolw: This video is available to this channel's members on level: Channel Member (or any higher level). Join this channel to get access to members-only content and other exclusive perks.\n" 12:52:34.182 [debug] QUERY OK source="media_items" db=6.0ms queue=0.1ms idle=1405.3ms UPDATE "media_items" SET "last_error" = ?, "updated_at" = ? WHERE "id" = ? ["ERROR: [youtube] rW6hwfPFolw: This video is available to this channel's members on level: Channel Member (or any higher level). Join this channel to get access to members-only content and other exclusive perks.\n", ~U[2026-01-03 01:52:34Z], 12865] 12:52:34.182 [error] yt-dlp download will not be retried: "ERROR: [youtube] rW6hwfPFolw: This video is available to this channel's members on level: Channel Member (or any higher level). Join this channel to get access to members-only content and other exclusive perks.\n" 12:52:34.183 [info] {"args":{"id":12865},"id":202099,"meta":{},"state":"success","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":9509030,"event":"job:stop","queue_time":19948672757,"attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 12:52:34.192 [info] {"args":{"id":12952},"id":202100,"meta":{},"system_time":1767405154192660694,"max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 12:52:34.193 [debug] QUERY OK source="media_items" db=0.4ms idle=1233.4ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [12952] 12:52:34.193 [info] User scripts lifecyle file either not present or is empty. Skipping. 12:52:34.194 [debug] QUERY OK source="sources" db=0.4ms idle=230.9ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [13] 12:52:34.195 [debug] QUERY OK source="media_profiles" db=0.4ms idle=12.2ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 12:52:34.196 [debug] QUERY OK source="media_items" db=0.5ms idle=12.0ms SELECT 1 FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) LIMIT 1 [12952] 12:52:34.197 [debug] QUERY OK source="media_metadata" db=0.2ms idle=4.9ms SELECT m0."id", m0."metadata_filepath", m0."thumbnail_filepath", m0."media_item_id", m0."inserted_at", m0."updated_at", m0."media_item_id" FROM "media_metadata" AS m0 WHERE (m0."media_item_id" = ?) [12952] 12:52:34.198 [debug] QUERY OK source="media_profiles" db=0.5ms idle=4.4ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 12:52:34.199 [debug] QUERY OK source="settings" db=0.3ms idle=4.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:52:34.199 [debug] QUERY OK source="settings" db=0.2ms idle=4.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:52:34.200 [debug] Running yt-dlp command for action: get_downloadable_status 12:52:34.202 [debug] QUERY OK source="settings" db=0.3ms idle=5.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:52:34.202 [debug] QUERY OK source="settings" db=0.2ms idle=4.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:52:34.203 [debug] QUERY OK source="settings" db=0.3ms queue=0.1ms idle=4.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:52:34.203 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=GWBtwldU2JQ --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/98/39/983984fb456698f27d4eb47dd424ee681884eccb3512baedc238a93f4c94523e.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 12:52:38.940 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=GWBtwldU2JQ --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/98/39/983984fb456698f27d4eb47dd424ee681884eccb3512baedc238a93f4c94523e.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 1 with: ERROR: [youtube] GWBtwldU2JQ: This video is available to this channel's members on level: Full Course Access (or any higher level). Join this channel to get access to members-only content and other exclusive perks. 12:52:38.941 [debug] QUERY OK source="settings" db=0.3ms idle=1169.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:52:38.942 [debug] QUERY OK source="settings" db=0.3ms idle=1170.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:52:38.942 [debug] Running yt-dlp command for action: get_downloadable_status 12:52:38.944 [debug] QUERY OK source="settings" db=0.3ms idle=1173.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:52:38.945 [debug] QUERY OK source="settings" db=0.3ms idle=1173.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:52:38.945 [debug] QUERY OK source="settings" db=0.3ms idle=966.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:52:38.946 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=GWBtwldU2JQ --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/91/bb/91bb174c70aafefc1939b72d219f4b99f199c56b4d5675f332305942afa330e9.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 12:52:42.434 [info] {"source":"oban","duration":1514,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:52:43.905 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=GWBtwldU2JQ --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/91/bb/91bb174c70aafefc1939b72d219f4b99f199c56b4d5675f332305942afa330e9.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 1 with: ERROR: [youtube] GWBtwldU2JQ: This video is available to this channel's members on level: Full Course Access (or any higher level). Join this channel to get access to members-only content and other exclusive perks. 12:52:43.905 [error] yt-dlp download error for media item #12952: "ERROR: [youtube] GWBtwldU2JQ: This video is available to this channel's members on level: Full Course Access (or any higher level). Join this channel to get access to members-only content and other exclusive perks.\n" 12:52:43.912 [debug] QUERY OK source="media_items" db=6.7ms queue=0.1ms idle=1134.9ms UPDATE "media_items" SET "last_error" = ?, "updated_at" = ? WHERE "id" = ? ["ERROR: [youtube] GWBtwldU2JQ: This video is available to this channel's members on level: Full Course Access (or any higher level). Join this channel to get access to members-only content and other exclusive perks.\n", ~U[2026-01-03 01:52:43Z], 12952] 12:52:43.912 [error] yt-dlp download will not be retried: "ERROR: [youtube] GWBtwldU2JQ: This video is available to this channel's members on level: Full Course Access (or any higher level). Join this channel to get access to members-only content and other exclusive perks.\n" 12:52:43.913 [info] {"args":{"id":12952},"id":202100,"meta":{},"state":"success","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":9720263,"event":"job:stop","queue_time":19958189826,"attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 12:52:43.922 [info] {"args":{"id":12956},"id":202101,"meta":{},"system_time":1767405163921990075,"max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 12:52:43.923 [debug] QUERY OK source="media_items" db=0.7ms idle=929.7ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [12956] 12:52:43.923 [info] User scripts lifecyle file either not present or is empty. Skipping. 12:52:43.924 [debug] QUERY OK source="sources" db=0.7ms idle=152.8ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [13] 12:52:43.925 [debug] QUERY OK source="media_profiles" db=0.6ms idle=12.1ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 12:52:43.927 [debug] QUERY OK source="media_items" db=1.3ms idle=12.1ms SELECT 1 FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) LIMIT 1 [12956] 12:52:43.930 [debug] QUERY OK source="media_metadata" db=0.5ms idle=7.6ms SELECT m0."id", m0."metadata_filepath", m0."thumbnail_filepath", m0."media_item_id", m0."inserted_at", m0."updated_at", m0."media_item_id" FROM "media_metadata" AS m0 WHERE (m0."media_item_id" = ?) [12956] 12:52:43.930 [debug] QUERY OK source="media_profiles" db=0.5ms idle=7.1ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 12:52:43.931 [debug] QUERY OK source="settings" db=0.6ms idle=6.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:52:43.932 [debug] QUERY OK source="settings" db=0.4ms idle=6.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:52:43.933 [debug] Running yt-dlp command for action: get_downloadable_status 12:52:43.936 [debug] QUERY OK source="settings" db=0.6ms idle=8.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:52:43.936 [debug] QUERY OK source="settings" db=0.4ms idle=6.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:52:43.937 [debug] QUERY OK source="settings" db=0.3ms idle=6.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:52:43.937 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=7Ouy_Cy4vrk --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/71/0a/710a8f2df28b99461b02a844cd5f351029f9db5cd9cc305accac21b65c1efdfe.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 12:52:48.726 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=7Ouy_Cy4vrk --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/71/0a/710a8f2df28b99461b02a844cd5f351029f9db5cd9cc305accac21b65c1efdfe.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 1 with: ERROR: [youtube] 7Ouy_Cy4vrk: This video is available to this channel's members on level: Full Course Access (or any higher level). Join this channel to get access to members-only content and other exclusive perks. 12:52:48.727 [debug] QUERY OK source="settings" db=0.3ms queue=0.1ms idle=954.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:52:48.727 [debug] QUERY OK source="settings" db=0.1ms idle=954.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:52:48.729 [debug] Running yt-dlp command for action: get_downloadable_status 12:52:48.732 [debug] QUERY OK source="settings" db=0.4ms idle=958.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:52:48.732 [debug] QUERY OK source="settings" db=0.4ms idle=959.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:52:48.733 [debug] QUERY OK source="settings" db=0.4ms idle=726.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:52:48.733 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=7Ouy_Cy4vrk --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/4c/6c/4c6cfe078a93eb16f672d112883f0c7669ceeeb120de05ea6d9d2bfbed046374.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 12:52:53.454 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=7Ouy_Cy4vrk --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/4c/6c/4c6cfe078a93eb16f672d112883f0c7669ceeeb120de05ea6d9d2bfbed046374.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 1 with: ERROR: [youtube] 7Ouy_Cy4vrk: This video is available to this channel's members on level: Full Course Access (or any higher level). Join this channel to get access to members-only content and other exclusive perks. 12:52:53.454 [error] yt-dlp download error for media item #12956: "ERROR: [youtube] 7Ouy_Cy4vrk: This video is available to this channel's members on level: Full Course Access (or any higher level). Join this channel to get access to members-only content and other exclusive perks.\n" 12:52:53.457 [debug] QUERY OK source="media_items" db=2.3ms queue=0.1ms idle=1683.9ms UPDATE "media_items" SET "last_error" = ?, "updated_at" = ? WHERE "id" = ? ["ERROR: [youtube] 7Ouy_Cy4vrk: This video is available to this channel's members on level: Full Course Access (or any higher level). Join this channel to get access to members-only content and other exclusive perks.\n", ~U[2026-01-03 01:52:53Z], 12956] 12:52:53.457 [error] yt-dlp download will not be retried: "ERROR: [youtube] 7Ouy_Cy4vrk: This video is available to this channel's members on level: Full Course Access (or any higher level). Join this channel to get access to members-only content and other exclusive perks.\n" 12:52:53.458 [info] {"args":{"id":12956},"id":202101,"meta":{},"state":"success","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":9535896,"event":"job:stop","queue_time":19967919703,"attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 12:52:53.467 [info] {"args":{"id":12959},"id":202102,"meta":{},"system_time":1767405173467220844,"max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 12:52:53.468 [debug] QUERY OK source="media_items" db=0.8ms idle=1450.1ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [12959] 12:52:53.468 [info] User scripts lifecyle file either not present or is empty. Skipping. 12:52:53.469 [debug] QUERY OK source="sources" db=0.4ms idle=449.4ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [13] 12:52:53.470 [debug] QUERY OK source="media_profiles" db=0.5ms idle=12.1ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 12:52:53.471 [debug] QUERY OK source="media_items" db=1.1ms idle=11.5ms SELECT 1 FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) LIMIT 1 [12959] 12:52:53.473 [debug] QUERY OK source="media_metadata" db=0.2ms idle=6.2ms SELECT m0."id", m0."metadata_filepath", m0."thumbnail_filepath", m0."media_item_id", m0."inserted_at", m0."updated_at", m0."media_item_id" FROM "media_metadata" AS m0 WHERE (m0."media_item_id" = ?) [12959] 12:52:53.474 [debug] QUERY OK source="media_profiles" db=0.5ms idle=5.6ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 12:52:53.476 [debug] QUERY OK source="settings" db=0.4ms idle=6.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:52:53.476 [debug] QUERY OK source="settings" db=0.4ms idle=6.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:52:53.477 [debug] Running yt-dlp command for action: get_downloadable_status 12:52:53.479 [debug] QUERY OK source="settings" db=0.4ms idle=7.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:52:53.480 [debug] QUERY OK source="settings" db=0.3ms idle=5.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:52:53.480 [debug] QUERY OK source="settings" db=0.5ms idle=5.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:52:53.481 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=fRALnPkE2ug --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/42/62/42626b571928945627605cc7d93df71bd030dc2226875dc842b4f83bcccd943c.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 12:52:58.080 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=fRALnPkE2ug --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/42/62/42626b571928945627605cc7d93df71bd030dc2226875dc842b4f83bcccd943c.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 1 with: ERROR: [youtube] fRALnPkE2ug: This video is available to this channel's members on level: Full Course Access (or any higher level). Join this channel to get access to members-only content and other exclusive perks. 12:52:58.082 [debug] QUERY OK source="settings" db=0.8ms idle=1310.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:52:58.083 [debug] QUERY OK source="settings" db=0.4ms queue=0.1ms idle=1311.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:52:58.084 [debug] Running yt-dlp command for action: get_downloadable_status 12:52:58.086 [debug] QUERY OK source="settings" db=0.3ms idle=1314.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:52:58.087 [debug] QUERY OK source="settings" db=0.4ms queue=0.1ms idle=1055.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:52:58.087 [debug] QUERY OK source="settings" db=0.4ms idle=53.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:52:58.088 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=fRALnPkE2ug --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/08/eb/08ebbd292a7ed09e5d74b3b37f417987a602598686abc3de6b6938947b747268.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 12:53:00.103 [info] {"source":"oban","duration":367,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 12:53:02.920 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=fRALnPkE2ug --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/08/eb/08ebbd292a7ed09e5d74b3b37f417987a602598686abc3de6b6938947b747268.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 1 with: ERROR: [youtube] fRALnPkE2ug: This video is available to this channel's members on level: Full Course Access (or any higher level). Join this channel to get access to members-only content and other exclusive perks. 12:53:02.920 [error] yt-dlp download error for media item #12959: "ERROR: [youtube] fRALnPkE2ug: This video is available to this channel's members on level: Full Course Access (or any higher level). Join this channel to get access to members-only content and other exclusive perks.\n" 12:53:02.923 [debug] QUERY OK source="media_items" db=1.4ms queue=0.2ms idle=1150.3ms UPDATE "media_items" SET "last_error" = ?, "updated_at" = ? WHERE "id" = ? ["ERROR: [youtube] fRALnPkE2ug: This video is available to this channel's members on level: Full Course Access (or any higher level). Join this channel to get access to members-only content and other exclusive perks.\n", ~U[2026-01-03 01:53:02Z], 12959] 12:53:02.923 [error] yt-dlp download will not be retried: "ERROR: [youtube] fRALnPkE2ug: This video is available to this channel's members on level: Full Course Access (or any higher level). Join this channel to get access to members-only content and other exclusive perks.\n" 12:53:02.924 [info] {"args":{"id":12959},"id":202102,"meta":{},"state":"success","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":9456618,"event":"job:stop","queue_time":19977464716,"attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 12:53:02.932 [info] {"args":{"id":12961},"id":202103,"meta":{},"system_time":1767405182931991936,"max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 12:53:02.933 [debug] QUERY OK source="media_items" db=0.7ms idle=1161.0ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [12961] 12:53:02.935 [info] User scripts lifecyle file either not present or is empty. Skipping. 12:53:02.936 [debug] QUERY OK source="sources" db=0.4ms queue=0.1ms idle=890.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [13] 12:53:02.937 [debug] QUERY OK source="media_profiles" db=0.4ms queue=0.1ms idle=13.4ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 12:53:02.938 [debug] QUERY OK source="media_items" db=0.6ms queue=0.1ms idle=13.1ms SELECT 1 FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) LIMIT 1 [12961] 12:53:02.940 [debug] QUERY OK source="media_metadata" db=0.2ms idle=8.1ms SELECT m0."id", m0."metadata_filepath", m0."thumbnail_filepath", m0."media_item_id", m0."inserted_at", m0."updated_at", m0."media_item_id" FROM "media_metadata" AS m0 WHERE (m0."media_item_id" = ?) [12961] 12:53:02.941 [debug] QUERY OK source="media_profiles" db=0.4ms idle=7.6ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 12:53:02.942 [debug] QUERY OK source="settings" db=0.5ms idle=5.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:53:02.943 [debug] QUERY OK source="settings" db=0.4ms idle=5.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:53:02.944 [debug] Running yt-dlp command for action: get_downloadable_status 12:53:02.946 [debug] QUERY OK source="settings" db=0.3ms idle=7.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:53:02.946 [debug] QUERY OK source="settings" db=0.2ms idle=5.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:53:02.947 [debug] QUERY OK source="settings" db=0.3ms queue=0.1ms idle=5.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:53:02.947 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=xQt4Q_w9Ugs --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/0c/22/0c223b43e84d7be7b44609b3d31d2e959723789be594d4cfc9c6f73cab0f6c93.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 12:53:07.796 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=xQt4Q_w9Ugs --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/0c/22/0c223b43e84d7be7b44609b3d31d2e959723789be594d4cfc9c6f73cab0f6c93.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 1 with: ERROR: [youtube] xQt4Q_w9Ugs: This video is available to this channel's members on level: Full Course Access (or any higher level). Join this channel to get access to members-only content and other exclusive perks. 12:53:07.797 [debug] QUERY OK source="settings" db=0.4ms queue=0.2ms idle=1026.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:53:07.799 [debug] QUERY OK source="settings" db=0.7ms queue=0.1ms idle=1027.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:53:07.801 [debug] Running yt-dlp command for action: get_downloadable_status 12:53:07.803 [debug] QUERY OK source="settings" db=0.5ms idle=1032.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:53:07.804 [debug] QUERY OK source="settings" db=0.3ms idle=1032.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:53:07.805 [debug] QUERY OK source="settings" db=0.3ms idle=742.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:53:07.805 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=xQt4Q_w9Ugs --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/c9/db/c9dbaa2cafbdaa65f194702e92dbfbc30d28afcee606804137b7877df285beca.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 12:53:12.436 [info] {"source":"oban","duration":1289,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:53:12.539 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=xQt4Q_w9Ugs --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/c9/db/c9dbaa2cafbdaa65f194702e92dbfbc30d28afcee606804137b7877df285beca.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 1 with: ERROR: [youtube] xQt4Q_w9Ugs: This video is available to this channel's members on level: Full Course Access (or any higher level). Join this channel to get access to members-only content and other exclusive perks. 12:53:12.539 [error] yt-dlp download error for media item #12961: "ERROR: [youtube] xQt4Q_w9Ugs: This video is available to this channel's members on level: Full Course Access (or any higher level). Join this channel to get access to members-only content and other exclusive perks.\n" 12:53:12.542 [debug] QUERY OK source="media_items" db=2.5ms queue=0.1ms idle=768.6ms UPDATE "media_items" SET "last_error" = ?, "updated_at" = ? WHERE "id" = ? ["ERROR: [youtube] xQt4Q_w9Ugs: This video is available to this channel's members on level: Full Course Access (or any higher level). Join this channel to get access to members-only content and other exclusive perks.\n", ~U[2026-01-03 01:53:12Z], 12961] 12:53:12.542 [error] yt-dlp download will not be retried: "ERROR: [youtube] xQt4Q_w9Ugs: This video is available to this channel's members on level: Full Course Access (or any higher level). Join this channel to get access to members-only content and other exclusive perks.\n" 12:53:12.543 [info] {"args":{"id":12961},"id":202103,"meta":{},"state":"success","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":9610924,"event":"job:stop","queue_time":19986930709,"attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 12:53:12.551 [info] {"args":{"id":12963},"id":202104,"meta":{},"system_time":1767405192551285145,"max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 12:53:12.552 [debug] QUERY OK source="media_items" db=0.4ms queue=0.2ms idle=474.1ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [12963] 12:53:12.553 [info] User scripts lifecyle file either not present or is empty. Skipping. 12:53:12.553 [debug] QUERY OK source="sources" db=0.5ms queue=0.1ms idle=117.2ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [13] 12:53:12.554 [debug] QUERY OK source="media_profiles" db=0.3ms queue=0.1ms idle=11.9ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 12:53:12.556 [debug] QUERY OK source="media_items" db=0.9ms queue=0.1ms idle=11.6ms SELECT 1 FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) LIMIT 1 [12963] 12:53:12.559 [debug] QUERY OK source="media_metadata" db=0.5ms idle=7.6ms SELECT m0."id", m0."metadata_filepath", m0."thumbnail_filepath", m0."media_item_id", m0."inserted_at", m0."updated_at", m0."media_item_id" FROM "media_metadata" AS m0 WHERE (m0."media_item_id" = ?) [12963] 12:53:12.560 [debug] QUERY OK source="media_profiles" db=0.7ms queue=0.1ms idle=7.3ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 12:53:12.562 [debug] QUERY OK source="settings" db=0.6ms idle=7.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:53:12.562 [debug] QUERY OK source="settings" db=0.5ms idle=7.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:53:12.563 [debug] Running yt-dlp command for action: get_downloadable_status 12:53:12.565 [debug] QUERY OK source="settings" db=0.2ms idle=8.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:53:12.565 [debug] QUERY OK source="settings" db=0.1ms idle=5.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:53:12.566 [debug] QUERY OK source="settings" db=0.2ms idle=4.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:53:12.566 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=mE93BBjeGJ0 --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/db/ea/dbea84de7c1d0fa7631374606ecf8064c11e93e1a0f6d31de3251aede10747df.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 12:53:12.995 [info] GET /sources/14/media/55351/force_download 12:53:12.997 [debug] QUERY OK source="settings" db=0.7ms queue=0.1ms idle=434.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:53:12.998 [debug] QUERY OK source="settings" db=0.5ms queue=0.2ms idle=434.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:53:12.998 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 12:53:12.999 [error] #PID<0.9096.0> running PinchflatWeb.Endpoint (connection #PID<0.9095.0>, stream id 1) terminated Server: pinchflat.uiau7e.uncld.dev:80 (http) Request: GET /sources/14/media/55351/force_download ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/14/media/55351/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.9095.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/14/media/55351/force_download", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 56468}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "from" => "gptbot(at)openai.com", "host" => "pinchflat.uiau7e.uncld.dev", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.3; +https://openai.com/gptbot)", "via" => "2.0 Caddy", "x-forwarded-for" => "74.7.227.183", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https", "x-openai-host-hash" => "454925582" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.uiau7e.uncld.dev", method: "GET", owner: #PID<0.9096.0>, params: %{}, path_info: ["sources", "14", "media", "55351", "force_download"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.uiau7e.uncld.dev", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {10, 210, 0, 2}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"accept-encoding", "gzip, br, deflate"}, {"from", "gptbot(at)openai.com"}, {"host", "pinchflat.uiau7e.uncld.dev"}, {"user-agent", "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.3; +https://openai.com/gptbot)"}, {"via", "2.0 Caddy"}, {"x-forwarded-for", "74.7.227.183"}, {"x-forwarded-host", "pinchflat.uiau7e.uncld.dev"}, {"x-forwarded-proto", "https"}, {"x-openai-host-hash", "454925582"} ], request_path: "/sources/14/media/55351/force_download", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GIcVqK6v9tPbC4gAAaUB"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.9095.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/14/media/55351/force_download", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 56468}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "from" => "gptbot(at)openai.com", "host" => "pinchflat.uiau7e.uncld.dev", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.3; +https://openai.com/gptbot)", "via" => "2.0 Caddy", "x-forwarded-for" => "74.7.227.183", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https", "x-openai-host-hash" => "454925582" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/14/media/55351/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.9095.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/14/media/55351/force_download", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 56468}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "from" => "gptbot(at)openai.com", "host" => "pinchflat.uiau7e.uncld.dev", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.3; +https://openai.com/gptbot)", "via" => "2.0 Caddy", "x-forwarded-for" => "74.7.227.183", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https", "x-openai-host-hash" => "454925582" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.uiau7e.uncld.dev", method: "GET", owner: #PID<0.9096.0>, params: %{}, path_info: ["sources", "14", "media", "55351", "force_download"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.uiau7e.uncld.dev", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {10, 210, 0, 2}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"accept-encoding" (truncated) 12:53:17.247 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=mE93BBjeGJ0 --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/db/ea/dbea84de7c1d0fa7631374606ecf8064c11e93e1a0f6d31de3251aede10747df.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 1 with: ERROR: [youtube] mE93BBjeGJ0: This video is available to this channel's members on level: Full Course Access (or any higher level). Join this channel to get access to members-only content and other exclusive perks. 12:53:17.249 [debug] QUERY OK source="settings" db=0.5ms queue=0.1ms idle=1477.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:53:17.250 [debug] QUERY OK source="settings" db=0.5ms queue=0.1ms idle=1158.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:53:17.252 [debug] Running yt-dlp command for action: get_downloadable_status 12:53:17.255 [debug] QUERY OK source="settings" db=0.5ms idle=483.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:53:17.256 [debug] QUERY OK source="settings" db=0.6ms idle=484.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:53:17.256 [debug] QUERY OK source="settings" db=0.4ms idle=160.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:53:17.256 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=mE93BBjeGJ0 --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/2a/db/2adb314cf3e84c5872ea5e2a82b94ffc0791ca41aabfd3843bc55495daeba4bf.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 12:53:22.018 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=mE93BBjeGJ0 --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/2a/db/2adb314cf3e84c5872ea5e2a82b94ffc0791ca41aabfd3843bc55495daeba4bf.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 1 with: ERROR: [youtube] mE93BBjeGJ0: This video is available to this channel's members on level: Full Course Access (or any higher level). Join this channel to get access to members-only content and other exclusive perks. 12:53:22.018 [error] yt-dlp download error for media item #12963: "ERROR: [youtube] mE93BBjeGJ0: This video is available to this channel's members on level: Full Course Access (or any higher level). Join this channel to get access to members-only content and other exclusive perks.\n" 12:53:22.025 [debug] QUERY OK source="media_items" db=6.6ms queue=0.1ms idle=1248.1ms UPDATE "media_items" SET "last_error" = ?, "updated_at" = ? WHERE "id" = ? ["ERROR: [youtube] mE93BBjeGJ0: This video is available to this channel's members on level: Full Course Access (or any higher level). Join this channel to get access to members-only content and other exclusive perks.\n", ~U[2026-01-03 01:53:22Z], 12963] 12:53:22.026 [error] yt-dlp download will not be retried: "ERROR: [youtube] mE93BBjeGJ0: This video is available to this channel's members on level: Full Course Access (or any higher level). Join this channel to get access to members-only content and other exclusive perks.\n" 12:53:22.027 [info] {"args":{"id":12963},"id":202104,"meta":{},"state":"success","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":9475013,"event":"job:stop","queue_time":19996549745,"attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 12:53:22.036 [info] {"args":{"id":12965},"id":202105,"meta":{},"system_time":1767405202036416681,"max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 12:53:22.038 [debug] QUERY OK source="media_items" db=1.8ms idle=1265.7ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [12965] 12:53:22.039 [info] User scripts lifecyle file either not present or is empty. Skipping. 12:53:22.040 [debug] QUERY OK source="sources" db=0.7ms queue=0.1ms idle=930.5ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [13] 12:53:22.041 [debug] QUERY OK source="media_profiles" db=0.7ms idle=14.6ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 12:53:22.042 [debug] QUERY OK source="media_items" db=0.9ms idle=14.5ms SELECT 1 FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) LIMIT 1 [12965] 12:53:22.045 [debug] QUERY OK source="media_metadata" db=0.7ms idle=8.3ms SELECT m0."id", m0."metadata_filepath", m0."thumbnail_filepath", m0."media_item_id", m0."inserted_at", m0."updated_at", m0."media_item_id" FROM "media_metadata" AS m0 WHERE (m0."media_item_id" = ?) [12965] 12:53:22.046 [debug] QUERY OK source="media_profiles" db=0.6ms queue=0.1ms idle=7.1ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 12:53:22.048 [debug] QUERY OK source="settings" db=0.5ms idle=7.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:53:22.049 [debug] QUERY OK source="settings" db=0.5ms queue=0.1ms idle=7.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:53:22.050 [debug] Running yt-dlp command for action: get_downloadable_status 12:53:22.052 [debug] QUERY OK source="settings" db=0.4ms idle=9.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:53:22.052 [debug] QUERY OK source="settings" db=0.3ms idle=6.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:53:22.053 [debug] QUERY OK source="settings" db=0.4ms idle=6.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:53:22.053 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=lIfrFKo4Bag --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/d6/bf/d6bf0ddfe286827ab4e9f751afe28f0b0fd8c08a31fc515dc289e6be9abe7e16.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 12:53:26.740 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=lIfrFKo4Bag --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/d6/bf/d6bf0ddfe286827ab4e9f751afe28f0b0fd8c08a31fc515dc289e6be9abe7e16.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 1 with: ERROR: [youtube] lIfrFKo4Bag: This video is available to this channel's members on level: Channel Member (or any higher level). Join this channel to get access to members-only content and other exclusive perks. 12:53:26.741 [debug] QUERY OK source="settings" db=0.3ms idle=969.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:53:26.741 [debug] QUERY OK source="settings" db=0.4ms idle=970.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:53:26.743 [debug] Running yt-dlp command for action: get_downloadable_status 12:53:26.746 [debug] QUERY OK source="settings" db=0.4ms idle=974.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:53:26.746 [debug] QUERY OK source="settings" db=0.5ms idle=975.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:53:26.747 [debug] QUERY OK source="settings" db=0.4ms idle=620.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:53:26.747 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=lIfrFKo4Bag --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/07/c8/07c83740d21970e0e3bcabb8ea6717133a3e47760db7c8d8281e4418f2b74c38.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 12:53:31.382 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=lIfrFKo4Bag --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/07/c8/07c83740d21970e0e3bcabb8ea6717133a3e47760db7c8d8281e4418f2b74c38.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 1 with: ERROR: [youtube] lIfrFKo4Bag: This video is available to this channel's members on level: Channel Member (or any higher level). Join this channel to get access to members-only content and other exclusive perks. 12:53:31.382 [error] yt-dlp download error for media item #12965: "ERROR: [youtube] lIfrFKo4Bag: This video is available to this channel's members on level: Channel Member (or any higher level). Join this channel to get access to members-only content and other exclusive perks.\n" 12:53:31.387 [debug] QUERY OK source="media_items" db=4.3ms queue=0.1ms idle=1611.9ms UPDATE "media_items" SET "last_error" = ?, "updated_at" = ? WHERE "id" = ? ["ERROR: [youtube] lIfrFKo4Bag: This video is available to this channel's members on level: Channel Member (or any higher level). Join this channel to get access to members-only content and other exclusive perks.\n", ~U[2026-01-03 01:53:31Z], 12965] 12:53:31.388 [error] yt-dlp download will not be retried: "ERROR: [youtube] lIfrFKo4Bag: This video is available to this channel's members on level: Channel Member (or any higher level). Join this channel to get access to members-only content and other exclusive perks.\n" 12:53:31.389 [info] {"args":{"id":12965},"id":202105,"meta":{},"state":"success","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":9351923,"event":"job:stop","queue_time":20006033759,"attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 12:53:31.398 [info] {"args":{"id":12967},"id":202106,"meta":{},"system_time":1767405211398280722,"max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 12:53:31.399 [debug] QUERY OK source="media_items" db=1.0ms idle=1258.1ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [12967] 12:53:31.400 [info] User scripts lifecyle file either not present or is empty. Skipping. 12:53:31.401 [debug] QUERY OK source="sources" db=0.9ms queue=0.1ms idle=256.8ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [13] 12:53:31.403 [debug] QUERY OK source="media_profiles" db=0.6ms queue=0.1ms idle=14.6ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 12:53:31.404 [debug] QUERY OK source="media_items" db=0.9ms queue=0.1ms idle=14.2ms SELECT 1 FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) LIMIT 1 [12967] 12:53:31.407 [debug] QUERY OK source="media_metadata" db=0.4ms idle=8.6ms SELECT m0."id", m0."metadata_filepath", m0."thumbnail_filepath", m0."media_item_id", m0."inserted_at", m0."updated_at", m0."media_item_id" FROM "media_metadata" AS m0 WHERE (m0."media_item_id" = ?) [12967] 12:53:31.408 [debug] QUERY OK source="media_profiles" db=0.6ms idle=7.8ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 12:53:31.409 [debug] QUERY OK source="settings" db=0.3ms idle=7.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:53:31.410 [debug] QUERY OK source="settings" db=0.4ms idle=6.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:53:31.411 [debug] Running yt-dlp command for action: get_downloadable_status 12:53:31.413 [debug] QUERY OK source="settings" db=0.4ms idle=7.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:53:31.413 [debug] QUERY OK source="settings" db=0.2ms idle=6.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:53:31.414 [debug] QUERY OK source="settings" db=0.2ms queue=0.1ms idle=5.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:53:31.415 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=XVOaXlQVTHo --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/00/cf/00cf33e1a74745f4c589399bf647db63890ce69849700fef2660257a51588efe.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 12:53:36.481 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=XVOaXlQVTHo --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/00/cf/00cf33e1a74745f4c589399bf647db63890ce69849700fef2660257a51588efe.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 1 with: ERROR: [youtube] XVOaXlQVTHo: This video is available to this channel's members on level: Full Course Access (or any higher level). Join this channel to get access to members-only content and other exclusive perks. 12:53:36.482 [debug] QUERY OK source="settings" db=0.4ms idle=1711.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:53:36.483 [debug] QUERY OK source="settings" db=0.2ms queue=0.1ms idle=1712.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:53:36.484 [debug] Running yt-dlp command for action: get_downloadable_status 12:53:36.486 [debug] QUERY OK source="settings" db=0.2ms idle=1714.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:53:36.486 [debug] QUERY OK source="settings" db=0.5ms idle=1329.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:53:36.487 [debug] QUERY OK source="settings" db=0.4ms idle=328.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:53:36.488 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=XVOaXlQVTHo --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/ab/70/ab70d754da7810574c322a019390df7eeb516f54c0e0093e996b01bebb343c4b.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 12:53:41.184 [info] {"args":{"id":7},"id":202871,"meta":{},"system_time":1767405221184017036,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 12:53:41.185 [debug] QUERY OK source="sources" db=0.7ms idle=1413.2ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [7] 12:53:41.186 [debug] QUERY OK source="settings" db=0.6ms idle=1414.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:53:41.186 [debug] QUERY OK source="media_profiles" db=0.5ms idle=1012.7ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 12:53:41.187 [debug] QUERY OK source="settings" db=0.4ms idle=10.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:53:41.187 [debug] Fetching recent media IDs from YouTube API for playlist: UUwnKziETDbHJtx78nIkfYug 12:53:41.187 [debug] QUERY OK source="settings" db=0.3ms idle=3.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:53:41.188 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 12:53:41.473 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=XVOaXlQVTHo --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/ab/70/ab70d754da7810574c322a019390df7eeb516f54c0e0093e996b01bebb343c4b.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 1 with: ERROR: [youtube] XVOaXlQVTHo: This video is available to this channel's members on level: Full Course Access (or any higher level). Join this channel to get access to members-only content and other exclusive perks. 12:53:41.473 [error] yt-dlp download error for media item #12967: "ERROR: [youtube] XVOaXlQVTHo: This video is available to this channel's members on level: Full Course Access (or any higher level). Join this channel to get access to members-only content and other exclusive perks.\n" 12:53:41.555 [debug] QUERY OK source="media_items" db=4.7ms idle=364.2ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND m0."media_id" IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [7, "mC5NdpSMDks", "ccV3u3D9ONE", "cVCDjEfPzII", "n0X2rqzKTgM", "dcuCvRNqmpY", "GG1qX8jHKGo", "k9wkleHFvo0", "CWoYVlMuUNQ", "xlfeieH4z38", "eZM2Ik-FHEU", "CtcTG8-qzbA", "6Mmj7mf1qlg", "InwVO9qBjqs", "1Hp-W2bpPrw", "VtE5sTpkn7k", "8dOJypt2F70", "Evm4t4prtWo", "taLzgvbrnv0", "rgCrnyf5JEI", "PHhc-48JT3U", "vFKjpNNjNGw", "VJQlOI70ubw", "E5cfNq0DO90", "DNBGSsZatbY", "pna1NyaHTls", "CUHao-vA98g", "cPN9BJe_RQw", "rCBt4XgCX-0", "f4g6KKGMmEI", "P_I5Jsc3xRw", "fPaU2l7RktM", "0PVwt01b6fs", "0qMDM4Y4Hwo", "Ld285PDsHvs", "p1mQC71wplA", "9k5JhKK6WlA", "WPxrifmtlQI", "nVNBmK7a1y8", "QDnMYztaxfI", "gxsaWhXG1Gg", "RMtkKiyrXic", "JKlJ6OW67Bk", "Sjmb8O-fRWI", "qZhD4G7ENSY", "OTWDzMjgsEY", "Y_eCu_pW6-4", "DplgNsjOPRg", "l6hHI3AVoYM", "joAhvj7dfsc", ...] 12:53:41.568 [debug] QUERY OK source="media_items" db=8.6ms idle=373.3ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [7] 12:53:41.608 [debug] QUERY OK source="media_items" db=134.1ms queue=0.1ms idle=288.8ms UPDATE "media_items" SET "last_error" = ?, "updated_at" = ? WHERE "id" = ? ["ERROR: [youtube] XVOaXlQVTHo: This video is available to this channel's members on level: Full Course Access (or any higher level). Join this channel to get access to members-only content and other exclusive perks.\n", ~U[2026-01-03 01:53:41Z], 12967] 12:53:41.608 [error] yt-dlp download will not be retried: "ERROR: [youtube] XVOaXlQVTHo: This video is available to this channel's members on level: Full Course Access (or any higher level). Join this channel to get access to members-only content and other exclusive perks.\n" 12:53:41.610 [info] {"args":{"id":12967},"id":202106,"meta":{},"state":"success","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":10210677,"event":"job:stop","queue_time":20015395703,"attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 12:53:41.619 [info] {"args":{"id":12969},"id":202107,"meta":{},"system_time":1767405221618825531,"max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 12:53:41.620 [debug] QUERY OK source="media_items" db=1.0ms queue=0.1ms idle=45.6ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [12969] 12:53:41.620 [info] User scripts lifecyle file either not present or is empty. Skipping. 12:53:41.622 [debug] QUERY OK source="sources" db=1.3ms queue=0.1ms idle=12.7ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [13] 12:53:41.623 [debug] QUERY OK source="media_profiles" db=0.4ms idle=12.6ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 12:53:41.624 [debug] QUERY OK source="media_items" db=0.5ms idle=4.8ms SELECT 1 FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) LIMIT 1 [12969] 12:53:41.625 [debug] QUERY OK source="media_metadata" db=0.1ms idle=4.8ms SELECT m0."id", m0."metadata_filepath", m0."thumbnail_filepath", m0."media_item_id", m0."inserted_at", m0."updated_at", m0."media_item_id" FROM "media_metadata" AS m0 WHERE (m0."media_item_id" = ?) [12969] 12:53:41.625 [debug] QUERY OK source="media_profiles" db=0.2ms idle=3.0ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 12:53:41.626 [debug] QUERY OK source="settings" db=0.1ms idle=3.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:53:41.626 [debug] QUERY OK source="settings" db=0.2ms idle=2.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:53:41.628 [debug] Running yt-dlp command for action: get_downloadable_status 12:53:41.629 [debug] QUERY OK source="tasks" db=0.7ms idle=3.0ms INSERT INTO "tasks" ("job_id","media_item_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [202891, 8350, ~U[2026-01-03 01:53:41Z], ~U[2026-01-03 01:53:41Z]] 12:53:41.630 [debug] QUERY OK source="settings" db=0.5ms idle=3.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:53:41.630 [debug] QUERY OK source="settings" db=0.3ms idle=3.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:53:41.631 [debug] QUERY OK source="settings" db=0.2ms idle=2.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:53:41.631 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=IbyYy0lH2js --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/36/7e/367ef5c4e03432552294c6a8f0d2b3c53e6362d677ba27fe2045ae6d086c44aa.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 12:53:41.637 [debug] QUERY OK source="tasks" db=0.7ms idle=6.1ms INSERT INTO "tasks" ("job_id","media_item_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [202892, 8380, ~U[2026-01-03 01:53:41Z], ~U[2026-01-03 01:53:41Z]] 12:53:41.644 [debug] QUERY OK source="tasks" db=0.8ms idle=8.5ms INSERT INTO "tasks" ("job_id","media_item_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [202893, 8401, ~U[2026-01-03 01:53:41Z], ~U[2026-01-03 01:53:41Z]] 12:53:41.652 [debug] QUERY OK source="tasks" db=1.0ms idle=8.2ms INSERT INTO "tasks" ("job_id","media_item_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [202894, 8418, ~U[2026-01-03 01:53:41Z], ~U[2026-01-03 01:53:41Z]] 12:53:41.656 [debug] QUERY OK source="tasks" db=0.8ms idle=5.4ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [202895, 7, ~U[2026-01-03 01:53:41Z], ~U[2026-01-03 01:53:41Z]] 12:53:41.657 [info] {"args":{"id":7},"id":202871,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":472453,"event":"job:stop","queue_time":748030,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 12:53:42.438 [info] {"source":"oban","duration":1241,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:53:46.571 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=IbyYy0lH2js --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/36/7e/367ef5c4e03432552294c6a8f0d2b3c53e6362d677ba27fe2045ae6d086c44aa.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 1 with: ERROR: [youtube] IbyYy0lH2js: This video is available to this channel's members on level: Full Course Access (or any higher level). Join this channel to get access to members-only content and other exclusive perks. 12:53:46.572 [debug] QUERY OK source="settings" db=0.5ms idle=1801.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:53:46.573 [debug] QUERY OK source="settings" db=0.4ms idle=1801.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:53:46.574 [debug] Running yt-dlp command for action: get_downloadable_status 12:53:46.575 [debug] QUERY OK source="settings" db=0.2ms idle=1383.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:53:46.576 [debug] QUERY OK source="settings" db=0.4ms idle=804.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:53:46.576 [debug] QUERY OK source="settings" db=0.3ms idle=380.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:53:46.576 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=IbyYy0lH2js --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/c4/5b/c45bf5f19eb5f4adf7b041c14f038241ddc8a5c44c92ef0604ec31af0f7836d6.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 12:53:49.215 [info] {"args":{"id":24},"id":202872,"meta":{},"system_time":1767405229215210611,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 12:53:49.215 [debug] QUERY OK source="sources" db=0.3ms idle=1444.4ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [24] 12:53:49.216 [debug] QUERY OK source="settings" db=0.2ms idle=1445.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:53:49.217 [debug] QUERY OK source="media_profiles" db=0.3ms idle=1012.4ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 12:53:49.217 [debug] QUERY OK source="settings" db=0.1ms idle=9.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:53:49.217 [debug] Fetching recent media IDs from YouTube API for playlist: UUNTjSZfAK117b2kFGNCJfdA 12:53:49.217 [debug] QUERY OK source="settings" db=0.1ms idle=2.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:53:49.218 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 12:53:49.621 [debug] QUERY OK source="media_items" db=2.1ms idle=402.7ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND m0."media_id" IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [24, "2J48c2sukbo", "zq9gpqgWFv8", "EWdphas_OP4", "-U2sQ3e3R-0", "XdytKwHuG_8", "t-hori2Io14", "Xbemvi42Ngs", "91m4MQw_sZI", "GfUIbPqAMQs", "4VpVt3zdvL8", "q6Kd5C7O-F8", "EV6DSqTOXM0", "mMvfBUNNKIY", "C215grXAMCk", "_x6TE7hbE1k", "vycMxLco0a0", "lJWhisaNv8E", "4Blxc8mVzQs", "ztqcWc5aaks", "0Dvn039qD8I", "Vx69evZOEAE", "4dzZ44-xVds", "Rews5WNxiNk", "f-BFFWzh9uE", "RfJSMWHO0tY", "gMeUOURvDP8", "LEiL1np9sSM", "F-QeDtQ8Gy4", "9FSIF281OAo", "Shav52BfzWk", "dsCfQ3y5tHQ", "0rpt5sMb7cw", "Fe7Y152ak3Y", "HEuablkqrCg", "BRUTYHBJ_Z4", "gpaV4bgEG-g", "ppjFdEbIS4g", "lEhEMRA17bg", "tpIXmmV4ib4", "LBYQ_NLVKCw", "JsdM3k3QiPc", "TNmSVjGyZx0", "OMVYZziNjhc", "uyfyFRvng3c", "YFBg5NNEW4g", "IkZe4pXDv0k", "ZT0in30U-ug", "kqDqSLOuxmM", "ZgLsNSWN46o", ...] 12:53:49.626 [debug] QUERY OK source="media_items" db=2.6ms idle=406.8ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [24] 12:53:49.630 [debug] QUERY OK source="tasks" db=0.9ms idle=411.3ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [202896, 24, ~U[2026-01-03 01:53:49Z], ~U[2026-01-03 01:53:49Z]] 12:53:49.631 [info] {"args":{"id":24},"id":202872,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":415119,"event":"job:stop","queue_time":809598,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 12:53:51.339 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=IbyYy0lH2js --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/c4/5b/c45bf5f19eb5f4adf7b041c14f038241ddc8a5c44c92ef0604ec31af0f7836d6.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 1 with: ERROR: [youtube] IbyYy0lH2js: This video is available to this channel's members on level: Full Course Access (or any higher level). Join this channel to get access to members-only content and other exclusive perks. 12:53:51.343 [error] yt-dlp download error for media item #12969: "ERROR: [youtube] IbyYy0lH2js: This video is available to this channel's members on level: Full Course Access (or any higher level). Join this channel to get access to members-only content and other exclusive perks.\n" 12:53:51.346 [debug] QUERY OK source="media_items" db=2.1ms idle=573.4ms UPDATE "media_items" SET "last_error" = ?, "updated_at" = ? WHERE "id" = ? ["ERROR: [youtube] IbyYy0lH2js: This video is available to this channel's members on level: Full Course Access (or any higher level). Join this channel to get access to members-only content and other exclusive perks.\n", ~U[2026-01-03 01:53:51Z], 12969] 12:53:51.347 [error] yt-dlp download will not be retried: "ERROR: [youtube] IbyYy0lH2js: This video is available to this channel's members on level: Full Course Access (or any higher level). Join this channel to get access to members-only content and other exclusive perks.\n" 12:53:51.348 [info] {"args":{"id":12969},"id":202107,"meta":{},"state":"success","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":9728371,"event":"job:stop","queue_time":20025615733,"attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 12:53:51.356 [info] {"args":{"id":8350},"id":202891,"meta":{},"system_time":1767405231356299607,"max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 12:53:51.357 [debug] QUERY OK source="media_items" db=0.6ms idle=585.6ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [8350] 12:53:51.357 [info] User scripts lifecyle file either not present or is empty. Skipping. 12:53:51.358 [debug] QUERY OK source="sources" db=0.6ms idle=142.7ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [7] 12:53:51.359 [debug] QUERY OK source="media_profiles" db=0.5ms idle=12.2ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 12:53:51.360 [debug] QUERY OK source="media_items" db=0.7ms idle=11.5ms SELECT 1 FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) LIMIT 1 [8350] 12:53:51.362 [debug] QUERY OK source="media_metadata" db=0.2ms idle=5.7ms SELECT m0."id", m0."metadata_filepath", m0."thumbnail_filepath", m0."media_item_id", m0."inserted_at", m0."updated_at", m0."media_item_id" FROM "media_metadata" AS m0 WHERE (m0."media_item_id" = ?) [8350] 12:53:51.362 [debug] QUERY OK source="media_profiles" db=0.4ms idle=5.0ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 12:53:51.363 [debug] QUERY OK source="settings" db=0.2ms idle=4.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:53:51.363 [debug] QUERY OK source="settings" db=0.2ms idle=4.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:53:51.364 [debug] Running yt-dlp command for action: get_downloadable_status 12:53:51.365 [debug] QUERY OK source="settings" db=0.1ms idle=4.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:53:51.366 [debug] QUERY OK source="settings" db=0.6ms idle=3.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:53:51.366 [debug] QUERY OK source="settings" db=0.3ms idle=3.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:53:51.366 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=aCES82xfgdw --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/b5/af/b5af60158be084c8ff723681f38f57e82ca2c7c1c1fb0d4eeb09fcb055788aa7.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 12:53:56.821 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=aCES82xfgdw --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/b5/af/b5af60158be084c8ff723681f38f57e82ca2c7c1c1fb0d4eeb09fcb055788aa7.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 1 with: ERROR: [youtube] aCES82xfgdw: Sign in to confirm your age. This video may be inappropriate for some users. Use --cookies-from-browser or --cookies for the authentication. See https://github.com/yt-dlp/yt-dlp/wiki/FAQ#how-do-i-pass-cookies-to-yt-dlp for how to manually pass cookies. Also see https://github.com/yt-dlp/yt-dlp/wiki/Extractors#exporting-youtube-cookies for tips on effectively exporting YouTube cookies 12:53:56.822 [debug] QUERY OK source="settings" db=0.3ms queue=0.1ms idle=587.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:53:56.822 [debug] QUERY OK source="settings" db=0.1ms idle=51.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:53:56.823 [debug] Running yt-dlp command for action: get_downloadable_status 12:53:56.825 [debug] QUERY OK source="settings" db=0.2ms idle=53.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:53:56.825 [debug] QUERY OK source="settings" db=0.1ms idle=54.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:53:56.826 [debug] QUERY OK source="settings" db=0.1ms idle=54.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:53:56.826 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=aCES82xfgdw --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/3f/83/3f83d6f1190d3dcb86dd6677f010883e064ef6f2ad331f8824afe7517e62a936.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 12:54:00.104 [info] {"source":"oban","duration":353,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 12:54:02.308 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=aCES82xfgdw --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/3f/83/3f83d6f1190d3dcb86dd6677f010883e064ef6f2ad331f8824afe7517e62a936.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 1 with: ERROR: [youtube] aCES82xfgdw: Sign in to confirm your age. This video may be inappropriate for some users. Use --cookies-from-browser or --cookies for the authentication. See https://github.com/yt-dlp/yt-dlp/wiki/FAQ#how-do-i-pass-cookies-to-yt-dlp for how to manually pass cookies. Also see https://github.com/yt-dlp/yt-dlp/wiki/Extractors#exporting-youtube-cookies for tips on effectively exporting YouTube cookies 12:54:02.308 [error] yt-dlp download error for media item #8350: "ERROR: [youtube] aCES82xfgdw: Sign in to confirm your age. This video may be inappropriate for some users. Use --cookies-from-browser or --cookies for the authentication. See https://github.com/yt-dlp/yt-dlp/wiki/FAQ#how-do-i-pass-cookies-to-yt-dlp for how to manually pass cookies. Also see https://github.com/yt-dlp/yt-dlp/wiki/Extractors#exporting-youtube-cookies for tips on effectively exporting YouTube cookies\n" 12:54:02.309 [error] yt-dlp download will not be retried: "ERROR: [youtube] aCES82xfgdw: Sign in to confirm your age. This video may be inappropriate for some users. Use --cookies-from-browser or --cookies for the authentication. See https://github.com/yt-dlp/yt-dlp/wiki/FAQ#how-do-i-pass-cookies-to-yt-dlp for how to manually pass cookies. Also see https://github.com/yt-dlp/yt-dlp/wiki/Extractors#exporting-youtube-cookies for tips on effectively exporting YouTube cookies\n" 12:54:02.310 [info] {"args":{"id":8350},"id":202891,"meta":{},"state":"success","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":10953075,"event":"job:stop","queue_time":10353760,"attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 12:54:02.319 [info] {"args":{"id":8380},"id":202892,"meta":{},"system_time":1767405242319621259,"max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 12:54:02.320 [debug] QUERY OK source="media_items" db=0.6ms idle=1070.5ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [8380] 12:54:02.321 [info] User scripts lifecyle file either not present or is empty. Skipping. 12:54:02.321 [debug] QUERY OK source="sources" db=0.4ms idle=550.2ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [7] 12:54:02.322 [debug] QUERY OK source="media_profiles" db=0.2ms idle=70.4ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 12:54:02.323 [debug] QUERY OK source="media_items" db=0.5ms idle=12.0ms SELECT 1 FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) LIMIT 1 [8380] 12:54:02.324 [debug] QUERY OK source="media_metadata" db=0.1ms idle=4.4ms SELECT m0."id", m0."metadata_filepath", m0."thumbnail_filepath", m0."media_item_id", m0."inserted_at", m0."updated_at", m0."media_item_id" FROM "media_metadata" AS m0 WHERE (m0."media_item_id" = ?) [8380] 12:54:02.324 [debug] QUERY OK source="media_profiles" db=0.5ms idle=3.5ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 12:54:02.325 [debug] QUERY OK source="settings" db=0.4ms idle=3.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:54:02.326 [debug] QUERY OK source="settings" db=0.1ms idle=3.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:54:02.326 [debug] Running yt-dlp command for action: get_downloadable_status 12:54:02.327 [debug] QUERY OK source="settings" db=0.1ms idle=4.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:54:02.327 [debug] QUERY OK source="settings" db=0.1ms idle=3.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:54:02.327 [debug] QUERY OK source="settings" db=0.2ms idle=2.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:54:02.328 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=bhkmFO8DikY --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/25/5d/255d29eeba239d114952494ac0cba937c1e621b3d4e26b86825e191bd7dfbb27.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 12:54:07.812 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=bhkmFO8DikY --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/25/5d/255d29eeba239d114952494ac0cba937c1e621b3d4e26b86825e191bd7dfbb27.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 1 with: ERROR: [youtube] bhkmFO8DikY: Sign in to confirm your age. This video may be inappropriate for some users. Use --cookies-from-browser or --cookies for the authentication. See https://github.com/yt-dlp/yt-dlp/wiki/FAQ#how-do-i-pass-cookies-to-yt-dlp for how to manually pass cookies. Also see https://github.com/yt-dlp/yt-dlp/wiki/Extractors#exporting-youtube-cookies for tips on effectively exporting YouTube cookies 12:54:07.813 [debug] QUERY OK source="settings" db=0.3ms queue=0.1ms idle=544.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:54:07.814 [debug] QUERY OK source="settings" db=0.2ms idle=43.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:54:07.814 [debug] Running yt-dlp command for action: get_downloadable_status 12:54:07.816 [debug] QUERY OK source="settings" db=0.2ms idle=45.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:54:07.816 [debug] QUERY OK source="settings" db=0.1ms idle=45.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:54:07.817 [debug] QUERY OK source="settings" db=0.2ms idle=46.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:54:07.817 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=bhkmFO8DikY --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/24/70/2470683d7482015f4b2557906567641f528d9de5a07564ebfaf5f0db153c2956.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 12:54:12.441 [info] {"source":"oban","duration":2198,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:54:13.291 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=bhkmFO8DikY --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/24/70/2470683d7482015f4b2557906567641f528d9de5a07564ebfaf5f0db153c2956.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 1 with: ERROR: [youtube] bhkmFO8DikY: Sign in to confirm your age. This video may be inappropriate for some users. Use --cookies-from-browser or --cookies for the authentication. See https://github.com/yt-dlp/yt-dlp/wiki/FAQ#how-do-i-pass-cookies-to-yt-dlp for how to manually pass cookies. Also see https://github.com/yt-dlp/yt-dlp/wiki/Extractors#exporting-youtube-cookies for tips on effectively exporting YouTube cookies 12:54:13.291 [error] yt-dlp download error for media item #8380: "ERROR: [youtube] bhkmFO8DikY: Sign in to confirm your age. This video may be inappropriate for some users. Use --cookies-from-browser or --cookies for the authentication. See https://github.com/yt-dlp/yt-dlp/wiki/FAQ#how-do-i-pass-cookies-to-yt-dlp for how to manually pass cookies. Also see https://github.com/yt-dlp/yt-dlp/wiki/Extractors#exporting-youtube-cookies for tips on effectively exporting YouTube cookies\n" 12:54:13.292 [error] yt-dlp download will not be retried: "ERROR: [youtube] bhkmFO8DikY: Sign in to confirm your age. This video may be inappropriate for some users. Use --cookies-from-browser or --cookies for the authentication. See https://github.com/yt-dlp/yt-dlp/wiki/FAQ#how-do-i-pass-cookies-to-yt-dlp for how to manually pass cookies. Also see https://github.com/yt-dlp/yt-dlp/wiki/Extractors#exporting-youtube-cookies for tips on effectively exporting YouTube cookies\n" 12:54:13.293 [info] {"args":{"id":8380},"id":202892,"meta":{},"state":"success","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":10972464,"event":"job:stop","queue_time":21316845,"attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 12:54:13.302 [info] {"args":{"id":8401},"id":202893,"meta":{},"system_time":1767405253302484074,"max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 12:54:13.303 [debug] QUERY OK source="media_items" db=0.6ms idle=1018.1ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [8401] 12:54:13.303 [info] User scripts lifecyle file either not present or is empty. Skipping. 12:54:13.304 [debug] QUERY OK source="sources" db=0.5ms idle=862.9ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [7] 12:54:13.305 [debug] QUERY OK source="media_profiles" db=0.5ms idle=17.8ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 12:54:13.306 [debug] QUERY OK source="media_items" db=0.8ms idle=12.5ms SELECT 1 FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) LIMIT 1 [8401] 12:54:13.308 [debug] QUERY OK source="media_metadata" db=0.2ms idle=5.6ms SELECT m0."id", m0."metadata_filepath", m0."thumbnail_filepath", m0."media_item_id", m0."inserted_at", m0."updated_at", m0."media_item_id" FROM "media_metadata" AS m0 WHERE (m0."media_item_id" = ?) [8401] 12:54:13.308 [debug] QUERY OK source="media_profiles" db=0.4ms idle=4.9ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 12:54:13.309 [debug] QUERY OK source="settings" db=0.3ms idle=4.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:54:13.310 [debug] QUERY OK source="settings" db=0.3ms idle=4.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:54:13.310 [debug] Running yt-dlp command for action: get_downloadable_status 12:54:13.314 [debug] QUERY OK source="settings" db=0.6ms queue=0.1ms idle=7.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:54:13.315 [debug] QUERY OK source="settings" db=0.3ms idle=6.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:54:13.316 [debug] QUERY OK source="settings" db=0.3ms idle=6.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:54:13.316 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=ZWSj0M132e8 --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/b3/a3/b3a3e9653ef7eafdc35eba922773c362e1875f2e4ee21fdb2c00958a9f4b8bfd.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 12:54:15.259 [info] GET /sources/22/media/21293/force_download 12:54:15.260 [debug] QUERY OK source="settings" db=0.5ms queue=0.2ms idle=968.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:54:15.261 [debug] QUERY OK source="settings" db=0.3ms queue=0.2ms idle=490.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:54:15.262 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 12:54:15.263 [error] #PID<0.9128.0> running PinchflatWeb.Endpoint (connection #PID<0.9127.0>, stream id 1) terminated Server: pinchflat.uiau7e.uncld.dev:80 (http) Request: GET /sources/22/media/21293/force_download ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/22/media/21293/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.9127.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/22/media/21293/force_download", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 36820}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "from" => "gptbot(at)openai.com", "host" => "pinchflat.uiau7e.uncld.dev", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.3; +https://openai.com/gptbot)", "via" => "2.0 Caddy", "x-forwarded-for" => "74.7.227.183", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https", "x-openai-host-hash" => "454925582" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.uiau7e.uncld.dev", method: "GET", owner: #PID<0.9128.0>, params: %{}, path_info: ["sources", "22", "media", "21293", "force_download"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.uiau7e.uncld.dev", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {10, 210, 0, 2}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"accept-encoding", "gzip, br, deflate"}, {"from", "gptbot(at)openai.com"}, {"host", "pinchflat.uiau7e.uncld.dev"}, {"user-agent", "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.3; +https://openai.com/gptbot)"}, {"via", "2.0 Caddy"}, {"x-forwarded-for", "74.7.227.183"}, {"x-forwarded-host", "pinchflat.uiau7e.uncld.dev"}, {"x-forwarded-proto", "https"}, {"x-openai-host-hash", "454925582"} ], request_path: "/sources/22/media/21293/force_download", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GIcVty3io7JqANAAAaYh"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.9127.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/22/media/21293/force_download", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 36820}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "from" => "gptbot(at)openai.com", "host" => "pinchflat.uiau7e.uncld.dev", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.3; +https://openai.com/gptbot)", "via" => "2.0 Caddy", "x-forwarded-for" => "74.7.227.183", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https", "x-openai-host-hash" => "454925582" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/22/media/21293/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.9127.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/22/media/21293/force_download", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 36820}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "from" => "gptbot(at)openai.com", "host" => "pinchflat.uiau7e.uncld.dev", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.3; +https://openai.com/gptbot)", "via" => "2.0 Caddy", "x-forwarded-for" => "74.7.227.183", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https", "x-openai-host-hash" => "454925582" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.uiau7e.uncld.dev", method: "GET", owner: #PID<0.9128.0>, params: %{}, path_info: ["sources", "22", "media", "21293", "force_download"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.uiau7e.uncld.dev", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {10, 210, 0, 2}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"accept-encoding" (truncated) 12:54:16.309 [info] {"args":{"id":22},"id":202873,"meta":{},"system_time":1767405256308896151,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 12:54:16.310 [debug] QUERY OK source="sources" db=0.7ms queue=0.1ms idle=1048.7ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [22] 12:54:16.311 [debug] QUERY OK source="settings" db=0.6ms queue=0.2ms idle=1049.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:54:16.312 [debug] QUERY OK source="media_profiles" db=0.6ms idle=1016.2ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 12:54:16.313 [debug] QUERY OK source="settings" db=0.4ms queue=0.1ms idle=12.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:54:16.313 [debug] Fetching recent media IDs from YouTube API for playlist: UUP1RHyOhO98Yn2rMbDBirxA 12:54:16.314 [debug] QUERY OK source="settings" db=0.3ms queue=0.1ms idle=5.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:54:16.314 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 12:54:16.620 [debug] QUERY OK source="media_items" db=1.1ms idle=308.9ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND m0."media_id" IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [22, "N5RzDzO54gQ", "5glegyagphQ", "VtiV_RfFqNM", "qNYyH7bMcbI", "MPdiQsg_zQ8", "4-VOc2Aich8", "gMrBK9rp6As", "p0lqYk8_uMI", "aKpQHxUiwxc", "KsuhL0zVo3I", "pCJcoGDsbxc", "_5AR-GKeqlk", "VcJG7rIOjb0", "vRzAE_0VnXQ", "uj_bcWLWMtw", "xRyiudwo_jM", "pTMRT4CRUoM", "W8_LEBSOsPg", "YZuP7d99kCw"] 12:54:16.623 [debug] QUERY OK source="settings" db=0.2ms idle=311.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:54:16.625 [debug] QUERY OK source="settings" db=2.6ms idle=310.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:54:16.626 [debug] Running yt-dlp command for action: get_media_attributes 12:54:16.627 [debug] QUERY OK source="settings" db=0.2ms idle=313.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:54:16.628 [debug] QUERY OK source="settings" db=0.7ms idle=313.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:54:16.629 [debug] QUERY OK source="settings" db=0.5ms queue=0.1ms idle=8.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:54:16.629 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=gMrBK9rp6As --simulate --skip-download --output /downloads/White Raven/Season %(upload_date>%Y)S/s%(upload_date>%Y)Se%(upload_date>%m%d)S00 - %(title)S.%(ext)S --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --print-to-file %(.{id,title,live_status,original_url,description,aspect_ratio,duration,upload_date,timestamp,playlist_index,filename})j /tmp/pinchflat/data/55/fa/55faf3232bb9c32d97dceb14a879343127c217d085301cf123a8ef94319857e2.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 12:54:18.770 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=ZWSj0M132e8 --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/b3/a3/b3a3e9653ef7eafdc35eba922773c362e1875f2e4ee21fdb2c00958a9f4b8bfd.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 1 with: ERROR: [youtube] ZWSj0M132e8: Sign in to confirm your age. This video may be inappropriate for some users. Use --cookies-from-browser or --cookies for the authentication. See https://github.com/yt-dlp/yt-dlp/wiki/FAQ#how-do-i-pass-cookies-to-yt-dlp for how to manually pass cookies. Also see https://github.com/yt-dlp/yt-dlp/wiki/Extractors#exporting-youtube-cookies for tips on effectively exporting YouTube cookies 12:54:18.772 [debug] QUERY OK source="settings" db=0.2ms queue=0.1ms idle=1000.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:54:18.773 [debug] QUERY OK source="settings" db=0.1ms idle=1001.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:54:18.773 [debug] Running yt-dlp command for action: get_downloadable_status 12:54:18.775 [debug] QUERY OK source="settings" db=0.1ms idle=1003.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:54:18.775 [debug] QUERY OK source="settings" db=0.2ms idle=1004.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:54:18.776 [debug] QUERY OK source="settings" db=0.1ms idle=469.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:54:18.776 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=ZWSj0M132e8 --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/f2/61/f261204cdd235abcad7aaa83720d8f324d5c1468a4e320e828628eaa7654b41b.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 12:54:21.346 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=gMrBK9rp6As --simulate --skip-download --output /downloads/White Raven/Season %(upload_date>%Y)S/s%(upload_date>%Y)Se%(upload_date>%m%d)S00 - %(title)S.%(ext)S --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --print-to-file %(.{id,title,live_status,original_url,description,aspect_ratio,duration,upload_date,timestamp,playlist_index,filename})j /tmp/pinchflat/data/55/fa/55faf3232bb9c32d97dceb14a879343127c217d085301cf123a8ef94319857e2.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 1 with: ERROR: [youtube] gMrBK9rp6As: Offline. 12:54:21.346 [error] Error creating media item 'gMrBK9rp6As' from URL: {:error, "ERROR: [youtube] gMrBK9rp6As: Offline.\n", 1} 12:54:21.347 [debug] QUERY OK source="media_items" db=0.6ms idle=575.2ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [22] 12:54:21.349 [debug] QUERY OK source="tasks" db=0.4ms idle=577.7ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [202897, 22, ~U[2026-01-03 01:54:21Z], ~U[2026-01-03 01:54:21Z]] 12:54:21.350 [info] {"args":{"id":22},"id":202873,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":5040596,"event":"job:stop","queue_time":554662,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 12:54:24.184 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=ZWSj0M132e8 --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/f2/61/f261204cdd235abcad7aaa83720d8f324d5c1468a4e320e828628eaa7654b41b.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 1 with: ERROR: [youtube] ZWSj0M132e8: Sign in to confirm your age. This video may be inappropriate for some users. Use --cookies-from-browser or --cookies for the authentication. See https://github.com/yt-dlp/yt-dlp/wiki/FAQ#how-do-i-pass-cookies-to-yt-dlp for how to manually pass cookies. Also see https://github.com/yt-dlp/yt-dlp/wiki/Extractors#exporting-youtube-cookies for tips on effectively exporting YouTube cookies 12:54:24.184 [error] yt-dlp download error for media item #8401: "ERROR: [youtube] ZWSj0M132e8: Sign in to confirm your age. This video may be inappropriate for some users. Use --cookies-from-browser or --cookies for the authentication. See https://github.com/yt-dlp/yt-dlp/wiki/FAQ#how-do-i-pass-cookies-to-yt-dlp for how to manually pass cookies. Also see https://github.com/yt-dlp/yt-dlp/wiki/Extractors#exporting-youtube-cookies for tips on effectively exporting YouTube cookies\n" 12:54:24.185 [error] yt-dlp download will not be retried: "ERROR: [youtube] ZWSj0M132e8: Sign in to confirm your age. This video may be inappropriate for some users. Use --cookies-from-browser or --cookies for the authentication. See https://github.com/yt-dlp/yt-dlp/wiki/FAQ#how-do-i-pass-cookies-to-yt-dlp for how to manually pass cookies. Also see https://github.com/yt-dlp/yt-dlp/wiki/Extractors#exporting-youtube-cookies for tips on effectively exporting YouTube cookies\n" 12:54:24.186 [info] {"args":{"id":8401},"id":202893,"meta":{},"state":"success","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":10882830,"event":"job:stop","queue_time":32298768,"attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 12:54:24.195 [info] {"args":{"id":8418},"id":202894,"meta":{},"system_time":1767405264195157734,"max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 12:54:24.196 [debug] QUERY OK source="media_items" db=0.6ms idle=1424.6ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [8418] 12:54:24.196 [info] User scripts lifecyle file either not present or is empty. Skipping. 12:54:24.197 [debug] QUERY OK source="sources" db=0.9ms idle=1425.8ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [7] 12:54:24.199 [debug] QUERY OK source="media_profiles" db=0.9ms idle=873.8ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 12:54:24.200 [debug] QUERY OK source="media_items" db=1.1ms idle=13.0ms SELECT 1 FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) LIMIT 1 [8418] 12:54:24.203 [debug] QUERY OK source="media_metadata" db=0.3ms idle=7.5ms SELECT m0."id", m0."metadata_filepath", m0."thumbnail_filepath", m0."media_item_id", m0."inserted_at", m0."updated_at", m0."media_item_id" FROM "media_metadata" AS m0 WHERE (m0."media_item_id" = ?) [8418] 12:54:24.204 [debug] QUERY OK source="media_profiles" db=0.6ms idle=7.0ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 12:54:24.205 [debug] QUERY OK source="settings" db=0.3ms idle=7.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:54:24.205 [debug] QUERY OK source="settings" db=0.2ms idle=6.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:54:24.206 [debug] Running yt-dlp command for action: get_downloadable_status 12:54:24.207 [debug] QUERY OK source="settings" db=0.1ms idle=6.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:54:24.207 [debug] QUERY OK source="settings" db=0.1ms idle=4.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:54:24.208 [debug] QUERY OK source="settings" db=0.4ms idle=4.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:54:24.208 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=v6jHhzj08yQ --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/a1/fc/a1fcd89cb9978b3bacfd71161dff261f72d7073aa494ed6b2ef200237f8feb17.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 12:54:29.591 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=v6jHhzj08yQ --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/a1/fc/a1fcd89cb9978b3bacfd71161dff261f72d7073aa494ed6b2ef200237f8feb17.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 1 with: ERROR: [youtube] v6jHhzj08yQ: Sign in to confirm your age. This video may be inappropriate for some users. Use --cookies-from-browser or --cookies for the authentication. See https://github.com/yt-dlp/yt-dlp/wiki/FAQ#how-do-i-pass-cookies-to-yt-dlp for how to manually pass cookies. Also see https://github.com/yt-dlp/yt-dlp/wiki/Extractors#exporting-youtube-cookies for tips on effectively exporting YouTube cookies 12:54:29.592 [debug] QUERY OK source="settings" db=0.3ms idle=1820.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:54:29.592 [debug] QUERY OK source="settings" db=0.2ms idle=1821.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:54:29.593 [debug] Running yt-dlp command for action: get_downloadable_status 12:54:29.595 [debug] QUERY OK source="settings" db=0.5ms idle=1823.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:54:29.595 [debug] QUERY OK source="settings" db=0.4ms idle=1254.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:54:29.596 [debug] QUERY OK source="settings" db=0.3ms idle=251.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:54:29.596 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=v6jHhzj08yQ --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/49/68/49688f1178783fcd38ebdd8e7d949ac9fd21f3817b6438bae421aee9b1b0c1d5.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 12:54:31.361 [info] {"args":{"id":3},"id":202874,"meta":{},"system_time":1767405271361266857,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 12:54:31.362 [debug] QUERY OK source="sources" db=0.7ms idle=590.8ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [3] 12:54:31.363 [debug] QUERY OK source="settings" db=0.4ms idle=592.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:54:31.364 [debug] QUERY OK source="media_profiles" db=0.5ms idle=592.7ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 12:54:31.365 [debug] QUERY OK source="settings" db=0.5ms queue=0.1ms idle=11.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:54:31.365 [debug] Fetching recent media IDs from YouTube API for playlist: UUISrVZmDM4x-Rq9mmNUw7Zw 12:54:31.366 [debug] QUERY OK source="settings" db=0.4ms idle=4.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:54:31.366 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 12:54:31.838 [debug] QUERY OK source="media_items" db=2.9ms idle=472.2ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND m0."media_id" IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [3, "CtF5dLHITYA", "SGJkxRdkRGg", "OUCt85aJaAA", "9gARPYZOka4", "-uH-Gi5tjEw", "qwUBBQKYX94", "s8VLDSQJ8nA", "EvPfr0lKkh4", "msXzAxF49gA", "hQCWaSvjkU0", "RcmjVsy3a-g", "xtuNc9vYJG4", "fj2tcg8OzsM", "2FZ4IfPACDM", "2Q9DzW20YJ8", "IVsWFGOE_mw", "vPxpMcv2Z4Y", "Zverj_ldlhY", "pQK8xasPd9Q", "_Yo7nh8u9pk", "4HzltsOvc0A", "a8UBLMm71JY", "3vqbr7-6Twk", "Df0iVjAKJZw", "n-X-AJpHUyI", "4CV7jI0e0Hw", "nqPoocCKci8", "5IIOdWnJGxg", "jkPL8BaM4ko", "CzeQtnRmUZ0", "9u-0d2IVZ3I", "igtvNmqsKM0", "47XDpW4nOzk", "8xvd7xSLQOo", "PnQPZMN0kIY", "feDph2WgRfI", "Z5FZ2XfX4Uc", "e0DxPopyrqM", "YvaK-Tjp2ck", "6_CctUPWX4I", "_DzHKw8yK58", "VnAkeiehyCg", "EFW1iCguDV8", "CEj7B1VzUwU", "3cy5fWUssjQ", "ZnjoTYmqLhs", "5IxtizzvaWw", "ZnBsMRl-EL0", "ET-M3T8E0PU", ...] 12:54:31.845 [debug] QUERY OK source="media_items" db=3.9ms idle=477.9ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [3] 12:54:31.849 [debug] QUERY OK source="tasks" db=0.3ms idle=482.4ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [202898, 3, ~U[2026-01-03 01:54:31Z], ~U[2026-01-03 01:54:31Z]] 12:54:31.850 [info] {"args":{"id":3},"id":202874,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":487839,"event":"job:stop","queue_time":693866,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 12:54:34.659 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=v6jHhzj08yQ --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/49/68/49688f1178783fcd38ebdd8e7d949ac9fd21f3817b6438bae421aee9b1b0c1d5.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 1 with: ERROR: [youtube] v6jHhzj08yQ: Sign in to confirm your age. This video may be inappropriate for some users. Use --cookies-from-browser or --cookies for the authentication. See https://github.com/yt-dlp/yt-dlp/wiki/FAQ#how-do-i-pass-cookies-to-yt-dlp for how to manually pass cookies. Also see https://github.com/yt-dlp/yt-dlp/wiki/Extractors#exporting-youtube-cookies for tips on effectively exporting YouTube cookies 12:54:34.659 [error] yt-dlp download error for media item #8418: "ERROR: [youtube] v6jHhzj08yQ: Sign in to confirm your age. This video may be inappropriate for some users. Use --cookies-from-browser or --cookies for the authentication. See https://github.com/yt-dlp/yt-dlp/wiki/FAQ#how-do-i-pass-cookies-to-yt-dlp for how to manually pass cookies. Also see https://github.com/yt-dlp/yt-dlp/wiki/Extractors#exporting-youtube-cookies for tips on effectively exporting YouTube cookies\n" 12:54:34.659 [error] yt-dlp download will not be retried: "ERROR: [youtube] v6jHhzj08yQ: Sign in to confirm your age. This video may be inappropriate for some users. Use --cookies-from-browser or --cookies for the authentication. See https://github.com/yt-dlp/yt-dlp/wiki/FAQ#how-do-i-pass-cookies-to-yt-dlp for how to manually pass cookies. Also see https://github.com/yt-dlp/yt-dlp/wiki/Extractors#exporting-youtube-cookies for tips on effectively exporting YouTube cookies\n" 12:54:34.661 [info] {"args":{"id":8418},"id":202894,"meta":{},"state":"success","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":10464679,"event":"job:stop","queue_time":43192749,"attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 12:54:34.669 [info] {"args":{"id":12971},"id":202108,"meta":{},"system_time":1767405274669391815,"max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 12:54:34.670 [debug] QUERY OK source="media_items" db=0.3ms queue=0.1ms idle=898.5ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [12971] 12:54:34.670 [info] User scripts lifecyle file either not present or is empty. Skipping. 12:54:34.671 [debug] QUERY OK source="sources" db=0.9ms idle=899.5ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [13] 12:54:34.672 [debug] QUERY OK source="media_profiles" db=0.6ms idle=307.8ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 12:54:34.674 [debug] QUERY OK source="media_items" db=0.8ms idle=12.1ms SELECT 1 FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) LIMIT 1 [12971] 12:54:34.676 [debug] QUERY OK source="media_metadata" db=0.2ms idle=6.5ms SELECT m0."id", m0."metadata_filepath", m0."thumbnail_filepath", m0."media_item_id", m0."inserted_at", m0."updated_at", m0."media_item_id" FROM "media_metadata" AS m0 WHERE (m0."media_item_id" = ?) [12971] 12:54:34.676 [debug] QUERY OK source="media_profiles" db=0.5ms idle=6.0ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 12:54:34.677 [debug] QUERY OK source="settings" db=0.2ms idle=5.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:54:34.677 [debug] QUERY OK source="settings" db=0.1ms idle=4.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:54:34.678 [debug] Running yt-dlp command for action: get_downloadable_status 12:54:34.680 [debug] QUERY OK source="settings" db=0.3ms idle=5.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:54:34.680 [debug] QUERY OK source="settings" db=0.3ms idle=4.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:54:34.681 [debug] QUERY OK source="settings" db=0.3ms idle=4.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:54:34.681 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=WxuKn6gRmmw --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/e2/39/e23909c32407c5fdba8a9cd830941451764788665ab13d1c8dfc18bc6a06df8c.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 12:54:39.176 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=WxuKn6gRmmw --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/e2/39/e23909c32407c5fdba8a9cd830941451764788665ab13d1c8dfc18bc6a06df8c.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 1 with: ERROR: [youtube] WxuKn6gRmmw: This video is available to this channel's members on level: Full Course Access (or any higher level). Join this channel to get access to members-only content and other exclusive perks. 12:54:39.177 [debug] QUERY OK source="settings" db=0.4ms idle=1405.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:54:39.179 [debug] QUERY OK source="settings" db=1.4ms queue=0.2ms idle=1406.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:54:39.182 [debug] Running yt-dlp command for action: get_downloadable_status 12:54:39.184 [debug] QUERY OK source="settings" db=0.3ms idle=1412.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:54:39.184 [debug] QUERY OK source="settings" db=0.3ms idle=1412.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:54:39.185 [debug] QUERY OK source="settings" db=0.4ms queue=0.1ms idle=806.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:54:39.185 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=WxuKn6gRmmw --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/93/21/932153535977e5552325c929946e248cb7d4c843be0b176c23b2edc66d0de2a4.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 12:54:42.443 [info] {"source":"oban","duration":1849,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:54:43.665 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=WxuKn6gRmmw --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/93/21/932153535977e5552325c929946e248cb7d4c843be0b176c23b2edc66d0de2a4.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 1 with: ERROR: [youtube] WxuKn6gRmmw: This video is available to this channel's members on level: Full Course Access (or any higher level). Join this channel to get access to members-only content and other exclusive perks. 12:54:43.665 [error] yt-dlp download error for media item #12971: "ERROR: [youtube] WxuKn6gRmmw: This video is available to this channel's members on level: Full Course Access (or any higher level). Join this channel to get access to members-only content and other exclusive perks.\n" 12:54:43.670 [debug] QUERY OK source="media_items" db=4.0ms idle=1222.4ms UPDATE "media_items" SET "last_error" = ?, "updated_at" = ? WHERE "id" = ? ["ERROR: [youtube] WxuKn6gRmmw: This video is available to this channel's members on level: Full Course Access (or any higher level). Join this channel to get access to members-only content and other exclusive perks.\n", ~U[2026-01-03 01:54:43Z], 12971] 12:54:43.670 [error] yt-dlp download will not be retried: "ERROR: [youtube] WxuKn6gRmmw: This video is available to this channel's members on level: Full Course Access (or any higher level). Join this channel to get access to members-only content and other exclusive perks.\n" 12:54:43.672 [info] {"args":{"id":12971},"id":202108,"meta":{},"state":"success","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":9001664,"event":"job:stop","queue_time":20078666750,"attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 12:54:43.680 [info] {"args":{"id":12975},"id":202109,"meta":{},"system_time":1767405283680184735,"max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 12:54:43.681 [debug] QUERY OK source="media_items" db=0.7ms idle=909.5ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [12975] 12:54:43.681 [info] User scripts lifecyle file either not present or is empty. Skipping. 12:54:43.682 [debug] QUERY OK source="sources" db=0.8ms idle=285.9ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [13] 12:54:43.684 [debug] QUERY OK source="media_profiles" db=0.7ms idle=12.7ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 12:54:43.685 [debug] QUERY OK source="media_items" db=1.2ms idle=12.1ms SELECT 1 FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) LIMIT 1 [12975] 12:54:43.688 [debug] QUERY OK source="media_metadata" db=0.6ms idle=7.4ms SELECT m0."id", m0."metadata_filepath", m0."thumbnail_filepath", m0."media_item_id", m0."inserted_at", m0."updated_at", m0."media_item_id" FROM "media_metadata" AS m0 WHERE (m0."media_item_id" = ?) [12975] 12:54:43.689 [debug] QUERY OK source="media_profiles" db=0.5ms idle=6.9ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 12:54:43.690 [debug] QUERY OK source="settings" db=0.6ms idle=6.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:54:43.690 [debug] QUERY OK source="settings" db=0.4ms idle=6.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:54:43.691 [debug] Running yt-dlp command for action: get_downloadable_status 12:54:43.693 [debug] QUERY OK source="settings" db=0.3ms idle=7.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:54:43.694 [debug] QUERY OK source="settings" db=0.3ms idle=5.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:54:43.694 [debug] QUERY OK source="settings" db=0.3ms queue=0.1ms idle=5.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:54:43.695 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=oAg22_-zGKA --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/09/88/0988ac488ab7f8d1e6971cbed71c13cc12e4bec6f3077c484d48428add37daca.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 12:54:43.990 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=R6gqu_PhXu4 --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --embed-subs --sub-langs en --write-thumbnail --convert-thumbnail jpg --output thumbnail:/downloads/CodeSync/Season %(upload_date>%Y)S/s%(upload_date>%Y)Se%(upload_date>%m%d)S73 - %(title)S-thumb.%(ext)S --embed-thumbnail --convert-thumbnail jpg --write-info-json --clean-info-json --embed-metadata --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --sponsorblock-mark sponsor,intro,outro,selfpromo,preview,filler,interaction,music_offtopic --output /downloads/CodeSync/Season %(upload_date>%Y)S/s%(upload_date>%Y)Se%(upload_date>%m%d)S73 - %(title)S.%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/0f/4d/0f4db2815c0f63c010bc2413a22e8d3e260298de7517d51e9c65a307fbbf5c6e.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: WARNING: The extractor specified to use impersonation for this download, but no impersonate target is available. If you encounter errors, then see https://github.com/yt-dlp/yt-dlp#impersonation for information on installing the required dependencies 12:54:44.151 [debug] Running yt-dlp command for action: download_thumbnail 12:54:44.152 [debug] QUERY OK source="settings" db=0.3ms queue=0.1ms idle=462.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:54:44.153 [debug] QUERY OK source="settings" db=0.1ms idle=462.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:54:44.153 [debug] QUERY OK source="settings" db=0.2ms idle=460.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:54:44.154 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=R6gqu_PhXu4 --no-simulate --skip-download --write-thumbnail --convert-thumbnail jpg --output /config/metadata/media_items/58796/thumbnail.%(ext)s --print-to-file after_move:%()j /tmp/pinchflat/data/cd/de/cdded867398a5bba6a2c37f34d723fb67dc1b4037b665e4bb6a7a5911112af5e.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 12:54:45.416 [info] {"args":{"id":1},"id":202875,"meta":{},"system_time":1767405285415794762,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 12:54:45.418 [debug] QUERY OK source="sources" db=1.3ms queue=0.2ms idle=1262.6ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 12:54:45.420 [debug] QUERY OK source="settings" db=1.4ms queue=0.2ms idle=1019.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:54:45.422 [debug] QUERY OK source="media_profiles" db=0.9ms queue=0.1ms idle=649.8ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 12:54:45.424 [debug] QUERY OK source="settings" db=1.5ms queue=0.1ms idle=14.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:54:45.424 [debug] Fetching recent media IDs from YouTube API for playlist: UU54SLBnD5k5U3Q6N__UjbAw 12:54:45.427 [debug] QUERY OK source="settings" db=0.9ms queue=1.6ms idle=9.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:54:45.427 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 12:54:45.790 [debug] QUERY OK source="media_items" db=3.5ms idle=367.9ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND m0."media_id" IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [1, "UYCKIroDVBY", "ynOiaE9f6NY", "At_WjGosTNM", "_s7ZzdPoVZE", "ulhKFEKXIEI", "YpQ2jupcrHk", "PetMnG6cCDw", "VdxlXCnA1DM", "uj2s7HZQigU", "rZ7Y_gPAHig", "LTmK8Ab6IFE", "sZKNVGI8xt0", "_PUZIf6VQto", "J2-1ZErtS7A", "OEyptSEM5Tw", "HLeY2_hJvRk", "DkZ5uXcDxjc", "zPWe_aBuNfM", "PZN18led4ok", "66F09ebI9gw", "Pfok4B_xyaI", "e5HEGCCadBU", "hYFsHfPquPg", "nKsnfEB29ek", "OpDh_O473Ms", "ZTtZ12XtQpg", "TphXloX3PEI", "4Qhp4VPP2Wo", "J5l7jvbp3u8", "uL_YQMkkbUg", "SAZ17l0EwxI", "fTa_T2pVwuk", "6HpTVfX0SvI", "XlIWsRyXL8U", "nM1GQNJU6LQ", "WVN1LNy1zgo", "0Fxf6_q7qHc", "dL0KPsy-Dww", "G43wJ7YyWzM", "yVy89TnL9Zg", "BR1VRJDu-gc", "-2HeoqiMC6s", "7WXyx51z5G8", "jCk-9S8PQyc", "vGEIHv1XelY", "rOI7HYGGHpo", "gNeGHhU6UaI", "gUlkwSHOT7Q", "tpf7TxliCxA", ...] 12:54:45.797 [debug] QUERY OK source="media_items" db=2.9ms idle=374.0ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [1] 12:54:45.801 [debug] QUERY OK source="tasks" db=0.6ms idle=373.6ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [202899, 1, ~U[2026-01-03 01:54:45Z], ~U[2026-01-03 01:54:45Z]] 12:54:45.802 [info] {"args":{"id":1},"id":202875,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":386029,"event":"job:stop","queue_time":811226,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 12:54:48.314 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=oAg22_-zGKA --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/09/88/0988ac488ab7f8d1e6971cbed71c13cc12e4bec6f3077c484d48428add37daca.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 1 with: ERROR: [youtube] oAg22_-zGKA: This video is available to this channel's members on level: Channel Member (or any higher level). Join this channel to get access to members-only content and other exclusive perks. 12:54:48.316 [debug] QUERY OK source="settings" db=0.5ms queue=0.2ms idle=901.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:54:48.317 [debug] QUERY OK source="settings" db=0.7ms idle=545.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:54:48.318 [debug] Running yt-dlp command for action: get_downloadable_status 12:54:48.320 [debug] QUERY OK source="settings" db=0.2ms idle=548.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:54:48.320 [debug] QUERY OK source="settings" db=0.1ms idle=549.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:54:48.321 [debug] QUERY OK source="settings" db=0.2ms idle=549.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:54:48.321 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=oAg22_-zGKA --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/d8/56/d856abd073d5f9d174eeed175ff4374d726bf7776db9d9d4091496115afd8ab7.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 12:54:52.082 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=R6gqu_PhXu4 --no-simulate --skip-download --write-thumbnail --convert-thumbnail jpg --output /config/metadata/media_items/58796/thumbnail.%(ext)s --print-to-file after_move:%()j /tmp/pinchflat/data/cd/de/cdded867398a5bba6a2c37f34d723fb67dc1b4037b665e4bb6a7a5911112af5e.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 12:54:52.083 [debug] QUERY OK db=0.1ms idle=654.9ms begin [] 12:54:52.084 [debug] QUERY OK source="media_items" db=0.6ms UPDATE "media_items" SET "description" = ?, "media_downloaded_at" = ?, "media_filepath" = ?, "metadata_filepath" = ?, "nfo_filepath" = ?, "predicted_media_filepath" = ?, "subtitle_filepaths" = ?, "thumbnail_filepath" = ?, "updated_at" = ? WHERE "id" = ? [nil, ~U[2026-01-03 01:54:44Z], "/downloads/CodeSync/Season 2025/s2025e120873 - Keynote The Socio technical elements that make good platforms.mp4", "/downloads/CodeSync/Season 2025/s2025e120873 - Keynote The Socio technical elements that make good platforms.info.json", "/downloads/CodeSync/Season 2025/s2025e120873 - Keynote The Socio technical elements that make good platforms.nfo", "/downloads/CodeSync/Season 2025/s2025e120873 - Keynote The Socio technical elements that make good platforms.mp4", [["en", "/downloads/CodeSync/Season 2025/s2025e120873 - Keynote The Socio technical elements that make good platforms.en.srt"]], "/downloads/CodeSync/Season 2025/s2025e120873 - Keynote The Socio technical elements that make good platforms-thumb.jpg", ~U[2026-01-03 01:54:52Z], 58796] 12:54:52.085 [debug] QUERY OK source="media_metadata" db=0.4ms INSERT INTO "media_metadata" ("metadata_filepath","thumbnail_filepath","media_item_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5) RETURNING "id" ["/config/metadata/media_items/58796/metadata.json.gz", "/config/metadata/media_items/58796/thumbnail.jpg", 58796, ~U[2026-01-03 01:54:52Z], ~U[2026-01-03 01:54:52Z]] 12:54:52.086 [debug] QUERY OK db=0.4ms commit [] 12:54:52.104 [debug] QUERY OK source="media_items" db=1.6ms idle=331.7ms UPDATE "media_items" SET "media_size_bytes" = ?, "updated_at" = ? WHERE "id" = ? [462292141, ~U[2026-01-03 01:54:52Z], 58796] 12:54:52.105 [info] User scripts lifecyle file either not present or is empty. Skipping. 12:54:52.106 [info] {"args":{"id":58796},"id":202084,"meta":{},"state":"success","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":1317595545,"event":"job:stop","queue_time":18834506785,"attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 12:54:52.113 [info] {"args":{"id":13026},"id":202110,"meta":{},"system_time":1767405292112999619,"max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 12:54:52.114 [debug] QUERY OK source="media_items" db=0.7ms idle=342.1ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [13026] 12:54:52.114 [info] User scripts lifecyle file either not present or is empty. Skipping. 12:54:52.116 [debug] QUERY OK source="sources" db=0.8ms idle=29.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [13] 12:54:52.116 [debug] QUERY OK source="media_profiles" db=0.3ms idle=11.6ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 12:54:52.117 [debug] QUERY OK source="media_items" db=0.5ms idle=10.9ms SELECT 1 FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) LIMIT 1 [13026] 12:54:52.118 [debug] QUERY OK source="media_metadata" db=0.1ms idle=5.5ms SELECT m0."id", m0."metadata_filepath", m0."thumbnail_filepath", m0."media_item_id", m0."inserted_at", m0."updated_at", m0."media_item_id" FROM "media_metadata" AS m0 WHERE (m0."media_item_id" = ?) [13026] 12:54:52.119 [debug] QUERY OK source="media_profiles" db=0.2ms idle=4.6ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 12:54:52.119 [debug] QUERY OK source="settings" db=0.1ms idle=3.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:54:52.119 [debug] QUERY OK source="settings" db=0.1ms idle=3.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:54:52.120 [debug] Running yt-dlp command for action: get_downloadable_status 12:54:52.121 [debug] QUERY OK source="settings" db=0.1ms idle=3.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:54:52.121 [debug] QUERY OK source="settings" db=0.1ms idle=2.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:54:52.121 [debug] QUERY OK source="settings" db=0.1ms idle=2.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:54:52.121 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=1h9G1SK5cbo --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/24/bf/24bf68812f6d1d3d2da9806774748957bdd608d922a472b577f9bfe4638dc1b6.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 12:54:52.909 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=oAg22_-zGKA --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/d8/56/d856abd073d5f9d174eeed175ff4374d726bf7776db9d9d4091496115afd8ab7.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 1 with: ERROR: [youtube] oAg22_-zGKA: This video is available to this channel's members on level: Channel Member (or any higher level). Join this channel to get access to members-only content and other exclusive perks. 12:54:52.909 [error] yt-dlp download error for media item #12975: "ERROR: [youtube] oAg22_-zGKA: This video is available to this channel's members on level: Channel Member (or any higher level). Join this channel to get access to members-only content and other exclusive perks.\n" 12:54:52.912 [debug] QUERY OK source="media_items" db=2.0ms queue=0.1ms idle=790.5ms UPDATE "media_items" SET "last_error" = ?, "updated_at" = ? WHERE "id" = ? ["ERROR: [youtube] oAg22_-zGKA: This video is available to this channel's members on level: Channel Member (or any higher level). Join this channel to get access to members-only content and other exclusive perks.\n", ~U[2026-01-03 01:54:52Z], 12975] 12:54:52.913 [error] yt-dlp download will not be retried: "ERROR: [youtube] oAg22_-zGKA: This video is available to this channel's members on level: Channel Member (or any higher level). Join this channel to get access to members-only content and other exclusive perks.\n" 12:54:52.914 [info] {"args":{"id":12975},"id":202109,"meta":{},"state":"success","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":9233355,"event":"job:stop","queue_time":20087677707,"attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 12:54:52.921 [info] {"args":{"id":13048},"id":202111,"meta":{},"system_time":1767405292921053876,"max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 12:54:52.922 [debug] QUERY OK source="media_items" db=0.4ms queue=0.1ms idle=799.6ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [13048] 12:54:52.922 [info] User scripts lifecyle file either not present or is empty. Skipping. 12:54:52.923 [debug] QUERY OK source="sources" db=0.9ms queue=0.1ms idle=492.5ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [13] 12:54:52.925 [debug] QUERY OK source="media_profiles" db=0.8ms idle=11.4ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 12:54:52.925 [debug] QUERY OK source="media_items" db=0.4ms idle=11.2ms SELECT 1 FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) LIMIT 1 [13048] 12:54:52.928 [debug] QUERY OK source="media_metadata" db=0.5ms idle=6.8ms SELECT m0."id", m0."metadata_filepath", m0."thumbnail_filepath", m0."media_item_id", m0."inserted_at", m0."updated_at", m0."media_item_id" FROM "media_metadata" AS m0 WHERE (m0."media_item_id" = ?) [13048] 12:54:52.929 [debug] QUERY OK source="media_profiles" db=0.9ms idle=6.6ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 12:54:52.930 [debug] QUERY OK source="settings" db=0.2ms idle=6.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:54:52.930 [debug] QUERY OK source="settings" db=0.1ms idle=5.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:54:52.931 [debug] Running yt-dlp command for action: get_downloadable_status 12:54:52.932 [debug] QUERY OK source="settings" db=0.4ms idle=6.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:54:52.933 [debug] QUERY OK source="settings" db=0.3ms idle=4.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:54:52.934 [debug] QUERY OK source="settings" db=0.3ms idle=4.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:54:52.934 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=dOrdNtH6gMI --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/5e/70/5e70f6f61e41b7372f805238aad4b9133a585cc40b53c0ab6ee9dfdce27e01c4.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 12:54:56.743 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=1h9G1SK5cbo --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/24/bf/24bf68812f6d1d3d2da9806774748957bdd608d922a472b577f9bfe4638dc1b6.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 1 with: ERROR: [youtube] 1h9G1SK5cbo: This video is available to this channel's members on level: Full Course Access (or any higher level). Join this channel to get access to members-only content and other exclusive perks. 12:54:56.744 [debug] QUERY OK source="settings" db=0.8ms idle=1972.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:54:56.745 [debug] QUERY OK source="settings" db=0.6ms idle=1973.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:54:56.746 [debug] Running yt-dlp command for action: get_downloadable_status 12:54:56.749 [debug] QUERY OK source="settings" db=0.4ms idle=1308.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:54:56.753 [debug] QUERY OK source="settings" db=3.9ms idle=978.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:54:56.754 [debug] QUERY OK source="settings" db=0.4ms queue=0.1ms idle=308.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:54:56.754 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=1h9G1SK5cbo --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/58/a2/58a2b89fb0d6e2d9c261d294236770c88f23d84796625d8fd12e7368ac48af01.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 12:54:57.711 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=dOrdNtH6gMI --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/5e/70/5e70f6f61e41b7372f805238aad4b9133a585cc40b53c0ab6ee9dfdce27e01c4.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 1 with: ERROR: [youtube] dOrdNtH6gMI: This video is available to this channel's members on level: Full Course Access (or any higher level). Join this channel to get access to members-only content and other exclusive perks. 12:54:57.712 [debug] QUERY OK source="settings" db=0.4ms idle=966.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:54:57.713 [debug] QUERY OK source="settings" db=0.2ms queue=0.1ms idle=963.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:54:57.714 [debug] Running yt-dlp command for action: get_downloadable_status 12:54:57.715 [debug] QUERY OK source="settings" db=0.2ms idle=961.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:54:57.716 [debug] QUERY OK source="settings" db=0.2ms queue=0.1ms idle=961.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:54:57.716 [debug] QUERY OK source="settings" db=0.2ms queue=0.1ms idle=264.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:54:57.717 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=dOrdNtH6gMI --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/20/4f/204f94b4e9544c896eeb68f7558f09724ed921282f2d546d4922db16cea32b74.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 12:55:00.105 [info] {"source":"oban","duration":455,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 12:55:01.446 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=1h9G1SK5cbo --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/58/a2/58a2b89fb0d6e2d9c261d294236770c88f23d84796625d8fd12e7368ac48af01.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 1 with: ERROR: [youtube] 1h9G1SK5cbo: This video is available to this channel's members on level: Full Course Access (or any higher level). Join this channel to get access to members-only content and other exclusive perks. 12:55:01.446 [error] yt-dlp download error for media item #13026: "ERROR: [youtube] 1h9G1SK5cbo: This video is available to this channel's members on level: Full Course Access (or any higher level). Join this channel to get access to members-only content and other exclusive perks.\n" 12:55:01.448 [debug] QUERY OK source="media_items" db=1.5ms idle=1341.6ms UPDATE "media_items" SET "last_error" = ?, "updated_at" = ? WHERE "id" = ? ["ERROR: [youtube] 1h9G1SK5cbo: This video is available to this channel's members on level: Full Course Access (or any higher level). Join this channel to get access to members-only content and other exclusive perks.\n", ~U[2026-01-03 01:55:01Z], 13026] 12:55:01.449 [error] yt-dlp download will not be retried: "ERROR: [youtube] 1h9G1SK5cbo: This video is available to this channel's members on level: Full Course Access (or any higher level). Join this channel to get access to members-only content and other exclusive perks.\n" 12:55:01.450 [info] {"args":{"id":13026},"id":202110,"meta":{},"state":"success","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":9336621,"event":"job:stop","queue_time":20096111714,"attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 12:55:01.458 [info] {"args":{"id":58865},"id":202117,"meta":{},"system_time":1767405301457972762,"max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 12:55:01.458 [debug] QUERY OK source="media_items" db=0.5ms idle=687.2ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [58865] 12:55:01.459 [info] User scripts lifecyle file either not present or is empty. Skipping. 12:55:01.459 [debug] QUERY OK source="sources" db=0.3ms idle=688.4ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [8] 12:55:01.460 [debug] QUERY OK source="media_profiles" db=0.3ms idle=11.4ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 12:55:01.461 [debug] QUERY OK source="media_items" db=0.4ms idle=10.3ms SELECT 1 FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) LIMIT 1 [58865] 12:55:01.462 [debug] QUERY OK source="media_metadata" db=0.1ms idle=4.4ms SELECT m0."id", m0."metadata_filepath", m0."thumbnail_filepath", m0."media_item_id", m0."inserted_at", m0."updated_at", m0."media_item_id" FROM "media_metadata" AS m0 WHERE (m0."media_item_id" = ?) [58865] 12:55:01.462 [debug] QUERY OK source="media_profiles" db=0.2ms idle=3.7ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 12:55:01.463 [debug] QUERY OK source="settings" db=0.1ms idle=3.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:55:01.463 [debug] QUERY OK source="settings" db=0.1ms idle=3.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:55:01.464 [debug] Running yt-dlp command for action: get_downloadable_status 12:55:01.467 [debug] QUERY OK source="settings" db=1.2ms queue=0.2ms idle=3.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:55:01.467 [debug] QUERY OK source="settings" db=0.1ms idle=4.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:55:01.468 [debug] QUERY OK source="settings" db=0.2ms idle=4.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:55:01.468 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=3D5q3NWEMZY --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/32/0a/320a1af492a993ecad3cc0172af844e25184db75c416ca3ebaea02b370212b1b.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 12:55:02.576 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=dOrdNtH6gMI --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/20/4f/204f94b4e9544c896eeb68f7558f09724ed921282f2d546d4922db16cea32b74.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 1 with: ERROR: [youtube] dOrdNtH6gMI: This video is available to this channel's members on level: Full Course Access (or any higher level). Join this channel to get access to members-only content and other exclusive perks. 12:55:02.576 [error] yt-dlp download error for media item #13048: "ERROR: [youtube] dOrdNtH6gMI: This video is available to this channel's members on level: Full Course Access (or any higher level). Join this channel to get access to members-only content and other exclusive perks.\n" 12:55:02.580 [debug] QUERY OK source="media_items" db=2.8ms queue=0.1ms idle=1109.8ms UPDATE "media_items" SET "last_error" = ?, "updated_at" = ? WHERE "id" = ? ["ERROR: [youtube] dOrdNtH6gMI: This video is available to this channel's members on level: Full Course Access (or any higher level). Join this channel to get access to members-only content and other exclusive perks.\n", ~U[2026-01-03 01:55:02Z], 13048] 12:55:02.580 [error] yt-dlp download will not be retried: "ERROR: [youtube] dOrdNtH6gMI: This video is available to this channel's members on level: Full Course Access (or any higher level). Join this channel to get access to members-only content and other exclusive perks.\n" 12:55:02.581 [info] {"args":{"id":13048},"id":202111,"meta":{},"state":"success","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":9659825,"event":"job:stop","queue_time":20096919721,"attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 12:55:02.589 [info] {"args":{"id":58868},"id":202119,"meta":{},"system_time":1767405302589455343,"max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 12:55:02.590 [debug] QUERY OK source="media_items" db=0.3ms queue=0.1ms idle=1121.7ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [58868] 12:55:02.591 [info] User scripts lifecyle file either not present or is empty. Skipping. 12:55:02.592 [debug] QUERY OK source="sources" db=1.0ms idle=119.2ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [8] 12:55:02.593 [debug] QUERY OK source="media_profiles" db=0.6ms idle=12.6ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 12:55:02.594 [debug] QUERY OK source="media_items" db=0.9ms idle=12.0ms SELECT 1 FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) LIMIT 1 [58868] 12:55:02.596 [debug] QUERY OK source="media_metadata" db=0.2ms idle=7.1ms SELECT m0."id", m0."metadata_filepath", m0."thumbnail_filepath", m0."media_item_id", m0."inserted_at", m0."updated_at", m0."media_item_id" FROM "media_metadata" AS m0 WHERE (m0."media_item_id" = ?) [58868] 12:55:02.597 [debug] QUERY OK source="media_profiles" db=0.4ms idle=6.1ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 12:55:02.597 [debug] QUERY OK source="settings" db=0.1ms idle=4.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:55:02.597 [debug] QUERY OK source="settings" db=0.1ms idle=4.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:55:02.598 [debug] Running yt-dlp command for action: get_downloadable_status 12:55:02.599 [debug] QUERY OK source="settings" db=0.1ms idle=4.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:55:02.599 [debug] QUERY OK source="settings" db=0.1ms idle=2.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:55:02.599 [debug] QUERY OK source="settings" db=0.2ms idle=2.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:55:02.600 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=FjRKvKC4ntw --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/ba/e6/bae6be900b01f57aa389747048c4e321f2324c68023062e0b27dbe43fa39fcda.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 12:55:06.491 [info] {"args":{"id":2},"id":202876,"meta":{},"system_time":1767405306491089406,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 12:55:06.492 [debug] QUERY OK source="sources" db=0.6ms idle=720.1ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [2] 12:55:06.492 [debug] QUERY OK source="settings" db=0.2ms idle=721.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:55:06.493 [debug] QUERY OK source="media_profiles" db=0.3ms idle=721.4ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 12:55:06.494 [debug] QUERY OK source="settings" db=0.4ms idle=9.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:55:06.494 [debug] Fetching recent media IDs from YouTube API for playlist: UUeE3lj6pLX_gCd0Yvns517Q 12:55:06.495 [debug] QUERY OK source="settings" db=0.6ms idle=3.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:55:06.495 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 12:55:06.873 [debug] QUERY OK source="media_items" db=4.1ms queue=0.1ms idle=377.3ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND m0."media_id" IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [2, "0k6I__61QDc", "tAnxIOSrasI", "qGmURDZnDhc", "vBsPoGzQPxA", "TiJoEoREmdE", "C-CkKUyzQhA", "K1UWf6n1FmY", "9VKS1P-aXSc", "kt_SNpPa2w4", "oaXa30IfZMc", "pUBcfLBwPXw", "WkG24B0xw1E", "fBQxlA3KI5U", "HbeqOllBS9o", "li1fOq_qqHM", "rsqGEZeczYw", "d7HFMZOp0S4", "oipxUVJUZrc", "cTxE_oPyD9Q", "yJlKrUX8Bvk", "pYtoIdfLeHA", "qPMGKmyQ1AA", "7W651YDFjhc", "EfUXdMBXauI", "804ky1qeBuE", "DRMng-9g9Ng", "Nzp4LPVF_7M", "1psbOjlzkyA", "IwMM9c9Q0Pw", "xhbzG8V0eSA", "-CSyf5_q-XQ", "C__g4XPdYRY", "7-FRyPsqWG0", "0-fliBPsvZI", "xLZYbjMl3hY", "qs36351JQys", "-aty2xx6kTI", "Ty7NA3HvUsk", "w6xdmHLxzSM", "-5YmR5lvMlQ", "fFbRmFdCoYc", "XkPAB-oXAoU", "rTecGGMrRKc", "tHjU0F1najQ", "Z6otzigVvWM", "9m36Ncgctbg", "B1KUJbbpoK0", "rqGLjKlA_tM", "PZDZuoa3kJE", ...] 12:55:06.891 [debug] QUERY OK source="media_items" db=14.2ms queue=0.1ms idle=384.6ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [2] 12:55:06.895 [debug] QUERY OK source="tasks" db=0.7ms queue=0.1ms idle=399.5ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [202900, 2, ~U[2026-01-03 01:55:06Z], ~U[2026-01-03 01:55:06Z]] 12:55:06.896 [info] {"args":{"id":2},"id":202876,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":404847,"event":"job:stop","queue_time":629615,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 12:55:08.881 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=3D5q3NWEMZY --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/32/0a/320a1af492a993ecad3cc0172af844e25184db75c416ca3ebaea02b370212b1b.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 12:55:08.882 [debug] Running yt-dlp command for action: download 12:55:08.883 [debug] QUERY OK source="settings" db=0.4ms idle=390.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:55:08.883 [debug] QUERY OK source="settings" db=0.4ms idle=112.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:55:08.884 [debug] QUERY OK source="settings" db=0.3ms idle=112.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:55:08.884 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=3D5q3NWEMZY --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --embed-subs --sub-langs en --write-thumbnail --convert-thumbnail jpg --output thumbnail:/downloads/Jeff Geerling/Season %(upload_date>%Y)S/s%(upload_date>%Y)Se%(upload_date>%m%d)S99 - %(title)S-thumb.%(ext)S --embed-thumbnail --convert-thumbnail jpg --write-info-json --clean-info-json --embed-metadata --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --sponsorblock-mark sponsor,intro,outro,selfpromo,preview,filler,interaction,music_offtopic --output /downloads/Jeff Geerling/Season %(upload_date>%Y)S/s%(upload_date>%Y)Se%(upload_date>%m%d)S99 - %(title)S.%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/7f/89/7f893aabe32442940868fbe4108d89a6dc2f6eb3b070f766a3117219a883acda.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 12:55:10.006 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=FjRKvKC4ntw --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/ba/e6/bae6be900b01f57aa389747048c4e321f2324c68023062e0b27dbe43fa39fcda.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 12:55:10.007 [debug] Running yt-dlp command for action: download 12:55:10.008 [debug] QUERY OK source="settings" db=0.3ms idle=1236.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:55:10.008 [debug] QUERY OK source="settings" db=0.2ms idle=1125.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:55:10.009 [debug] QUERY OK source="settings" db=0.2ms queue=0.1ms idle=1124.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:55:10.010 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=FjRKvKC4ntw --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --embed-subs --sub-langs en --write-thumbnail --convert-thumbnail jpg --output thumbnail:/downloads/Jeff Geerling/Season %(upload_date>%Y)S/s%(upload_date>%Y)Se%(upload_date>%m%d)S99 - %(title)S-thumb.%(ext)S --embed-thumbnail --convert-thumbnail jpg --write-info-json --clean-info-json --embed-metadata --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --sponsorblock-mark sponsor,intro,outro,selfpromo,preview,filler,interaction,music_offtopic --output /downloads/Jeff Geerling/Season %(upload_date>%Y)S/s%(upload_date>%Y)Se%(upload_date>%m%d)S99 - %(title)S.%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/d1/8a/d18a5e9fd7cf57fde0490f7d66eebdc3fa2c34a8f2c6d393b398064369149e27.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 12:55:12.446 [info] {"source":"oban","duration":2020,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:55:18.172 [info] GET /sources/13/media/12713/force_download 12:55:18.173 [debug] QUERY OK source="settings" db=0.2ms queue=0.2ms idle=646.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:55:18.174 [debug] QUERY OK source="settings" db=0.2ms queue=0.1ms idle=402.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:55:18.174 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 12:55:18.174 [error] #PID<0.9171.0> running PinchflatWeb.Endpoint (connection #PID<0.9170.0>, stream id 1) terminated Server: pinchflat.uiau7e.uncld.dev:80 (http) Request: GET /sources/13/media/12713/force_download ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/13/media/12713/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.9170.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/13/media/12713/force_download", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 40522}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "from" => "gptbot(at)openai.com", "host" => "pinchflat.uiau7e.uncld.dev", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.3; +https://openai.com/gptbot)", "via" => "2.0 Caddy", "x-forwarded-for" => "74.7.227.183", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https", "x-openai-host-hash" => "454925582" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.uiau7e.uncld.dev", method: "GET", owner: #PID<0.9171.0>, params: %{}, path_info: ["sources", "13", "media", "12713", "force_download"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.uiau7e.uncld.dev", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {10, 210, 0, 2}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"accept-encoding", "gzip, br, deflate"}, {"from", "gptbot(at)openai.com"}, {"host", "pinchflat.uiau7e.uncld.dev"}, {"user-agent", "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.3; +https://openai.com/gptbot)"}, {"via", "2.0 Caddy"}, {"x-forwarded-for", "74.7.227.183"}, {"x-forwarded-host", "pinchflat.uiau7e.uncld.dev"}, {"x-forwarded-proto", "https"}, {"x-openai-host-hash", "454925582"} ], request_path: "/sources/13/media/12713/force_download", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GIcVxdPPCEzDtdwAAafh"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.9170.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/13/media/12713/force_download", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 40522}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "from" => "gptbot(at)openai.com", "host" => "pinchflat.uiau7e.uncld.dev", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.3; +https://openai.com/gptbot)", "via" => "2.0 Caddy", "x-forwarded-for" => "74.7.227.183", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https", "x-openai-host-hash" => "454925582" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/13/media/12713/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.9170.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/13/media/12713/force_download", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 40522}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "from" => "gptbot(at)openai.com", "host" => "pinchflat.uiau7e.uncld.dev", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.3; +https://openai.com/gptbot)", "via" => "2.0 Caddy", "x-forwarded-for" => "74.7.227.183", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https", "x-openai-host-hash" => "454925582" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.uiau7e.uncld.dev", method: "GET", owner: #PID<0.9171.0>, params: %{}, path_info: ["sources", "13", "media", "12713", "force_download"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.uiau7e.uncld.dev", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {10, 210, 0, 2}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"accept-encoding" (truncated) 12:55:42.448 [info] {"source":"oban","duration":1140,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:56:00.106 [info] {"source":"oban","duration":376,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 12:56:02.660 [info] {"args":{"id":26},"id":202877,"meta":{},"system_time":1767405362660271489,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 12:56:02.661 [debug] QUERY OK source="sources" db=0.6ms idle=885.6ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [26] 12:56:02.662 [debug] QUERY OK source="settings" db=0.5ms idle=886.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:56:02.663 [debug] QUERY OK source="media_profiles" db=0.5ms idle=887.4ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 12:56:02.663 [debug] QUERY OK source="settings" db=0.4ms idle=10.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:56:02.663 [debug] Fetching recent media IDs from YouTube API for playlist: UU6NY7eg1FxCfAVX58yL0cJw 12:56:02.664 [debug] QUERY OK source="settings" db=0.3ms idle=3.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:56:02.664 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 12:56:03.185 [debug] QUERY OK source="media_items" db=3.5ms idle=520.8ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND m0."media_id" IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [26, "o2tiLxanOd0", "3Hkalon06bY", "acwCbVzHnRM", "m3Cddar422Y", "QItYx18RK4M", "iFrwlymvtTM", "CBKzBKWhNmE", "twi0ZP1ZWew", "MChkfGtdrgI", "usOf_0SOPl8", "7CamgxCV_lg", "CYW3qAtbiSg", "hkLPA0MEUFk", "Z9APq63an58", "MA2a2BtDQtE", "a23hasz0yk8", "o4tK4PhiK_c", "2-lUv1_A_KU", "W6GGXQ4xVdg", "TOIuoWmEqxo", "JRXSDo6asDk", "iAodr4mipf0", "12wArTNB9dk", "CFZ0TtEbofU", "RwW6yAVtf6Q", "9RshF2jpgLo", "MV8U7XQUpnY", "G0o-l5G0M4s", "FVOkr5w0O0I", "1IFJive9Bvc", "kuc2kAgYD8M", "jHOE86EMHvA", "CjuPAweX08c", "LH0RNHxukJs", "o6OxlF4vAuw", "Qxfr7h-PzdA", "xU_1w6OSnac", "-6G1TNBxp08", "o-ripoq_oXU", "Uevcwu2GLMs", "BAoXgNQ_wRI", "p4NWPk9B20I", "XKxqsR_4w_I", "BNtAWc-vLX4", "ktw-dS-26Gk", "Idbcu-oVtDs", "JCxqgAhaJj4", "A0vzWxUO5TA", "6M0wfDl0LEI", ...] 12:56:03.194 [debug] QUERY OK source="media_items" db=7.3ms idle=525.2ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [26] 12:56:03.199 [debug] QUERY OK source="tasks" db=0.9ms idle=534.1ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [202901, 26, ~U[2026-01-03 01:56:03Z], ~U[2026-01-03 01:56:03Z]] 12:56:03.200 [info] {"args":{"id":26},"id":202877,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":539326,"event":"job:stop","queue_time":737372,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 12:56:12.451 [info] {"source":"oban","duration":1792,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:56:15.240 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=FjRKvKC4ntw --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --embed-subs --sub-langs en --write-thumbnail --convert-thumbnail jpg --output thumbnail:/downloads/Jeff Geerling/Season %(upload_date>%Y)S/s%(upload_date>%Y)Se%(upload_date>%m%d)S99 - %(title)S-thumb.%(ext)S --embed-thumbnail --convert-thumbnail jpg --write-info-json --clean-info-json --embed-metadata --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --sponsorblock-mark sponsor,intro,outro,selfpromo,preview,filler,interaction,music_offtopic --output /downloads/Jeff Geerling/Season %(upload_date>%Y)S/s%(upload_date>%Y)Se%(upload_date>%m%d)S99 - %(title)S.%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/d1/8a/d18a5e9fd7cf57fde0490f7d66eebdc3fa2c34a8f2c6d393b398064369149e27.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: WARNING: The extractor specified to use impersonation for this download, but no impersonate target is available. If you encounter errors, then see https://github.com/yt-dlp/yt-dlp#impersonation for information on installing the required dependencies 12:56:15.442 [debug] Running yt-dlp command for action: download_thumbnail 12:56:15.443 [debug] QUERY OK source="settings" db=0.3ms idle=1668.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:56:15.444 [debug] QUERY OK source="settings" db=0.2ms idle=759.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:56:15.444 [debug] QUERY OK source="settings" db=0.1ms idle=669.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:56:15.445 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=FjRKvKC4ntw --no-simulate --skip-download --write-thumbnail --convert-thumbnail jpg --output /config/metadata/media_items/58868/thumbnail.%(ext)s --print-to-file after_move:%()j /tmp/pinchflat/data/8b/8c/8b8cff4c7a5f1cea99f244b235c124af336b6d70f35a74927a0e81f2e952e107.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 12:56:19.317 [info] GET /sources/13/media/41133/force_download 12:56:19.318 [debug] QUERY OK source="settings" db=0.5ms idle=621.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:56:19.319 [debug] QUERY OK source="settings" db=0.5ms idle=543.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:56:19.319 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 12:56:19.319 [error] #PID<0.9182.0> running PinchflatWeb.Endpoint (connection #PID<0.9181.0>, stream id 1) terminated Server: pinchflat.uiau7e.uncld.dev:80 (http) Request: GET /sources/13/media/41133/force_download ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/13/media/41133/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.9181.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/13/media/41133/force_download", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 35130}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "from" => "gptbot(at)openai.com", "host" => "pinchflat.uiau7e.uncld.dev", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.3; +https://openai.com/gptbot)", "via" => "2.0 Caddy", "x-forwarded-for" => "74.7.227.183", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https", "x-openai-host-hash" => "454925582" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.uiau7e.uncld.dev", method: "GET", owner: #PID<0.9182.0>, params: %{}, path_info: ["sources", "13", "media", "41133", "force_download"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.uiau7e.uncld.dev", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {10, 210, 0, 2}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"accept-encoding", "gzip, br, deflate"}, {"from", "gptbot(at)openai.com"}, {"host", "pinchflat.uiau7e.uncld.dev"}, {"user-agent", "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.3; +https://openai.com/gptbot)"}, {"via", "2.0 Caddy"}, {"x-forwarded-for", "74.7.227.183"}, {"x-forwarded-host", "pinchflat.uiau7e.uncld.dev"}, {"x-forwarded-proto", "https"}, {"x-openai-host-hash", "454925582"} ], request_path: "/sources/13/media/41133/force_download", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GIcV1BBQ8GTzg7gAAaih"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.9181.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/13/media/41133/force_download", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 35130}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "from" => "gptbot(at)openai.com", "host" => "pinchflat.uiau7e.uncld.dev", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.3; +https://openai.com/gptbot)", "via" => "2.0 Caddy", "x-forwarded-for" => "74.7.227.183", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https", "x-openai-host-hash" => "454925582" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/13/media/41133/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.9181.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/13/media/41133/force_download", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 35130}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "from" => "gptbot(at)openai.com", "host" => "pinchflat.uiau7e.uncld.dev", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.3; +https://openai.com/gptbot)", "via" => "2.0 Caddy", "x-forwarded-for" => "74.7.227.183", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https", "x-openai-host-hash" => "454925582" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.uiau7e.uncld.dev", method: "GET", owner: #PID<0.9182.0>, params: %{}, path_info: ["sources", "13", "media", "41133", "force_download"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.uiau7e.uncld.dev", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {10, 210, 0, 2}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"accept-encoding" (truncated) 12:56:22.827 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=FjRKvKC4ntw --no-simulate --skip-download --write-thumbnail --convert-thumbnail jpg --output /config/metadata/media_items/58868/thumbnail.%(ext)s --print-to-file after_move:%()j /tmp/pinchflat/data/8b/8c/8b8cff4c7a5f1cea99f244b235c124af336b6d70f35a74927a0e81f2e952e107.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 12:56:22.828 [debug] QUERY OK db=0.0ms queue=0.1ms idle=117.9ms begin [] 12:56:22.832 [debug] QUERY OK source="media_items" db=2.9ms UPDATE "media_items" SET "media_downloaded_at" = ?, "media_filepath" = ?, "metadata_filepath" = ?, "nfo_filepath" = ?, "predicted_media_filepath" = ?, "subtitle_filepaths" = ?, "thumbnail_filepath" = ?, "updated_at" = ? WHERE "id" = ? [~U[2026-01-03 01:56:15Z], "/downloads/Jeff Geerling/Season 2025/s2025e122699 - A tiny AI supercomputer for your desk.mp4", "/downloads/Jeff Geerling/Season 2025/s2025e122699 - A tiny AI supercomputer for your desk.info.json", "/downloads/Jeff Geerling/Season 2025/s2025e122699 - A tiny AI supercomputer for your desk.nfo", "/downloads/Jeff Geerling/Season 2025/s2025e122699 - A tiny AI supercomputer for your desk.mp4", [["en", "/downloads/Jeff Geerling/Season 2025/s2025e122699 - A tiny AI supercomputer for your desk.en.srt"]], "/downloads/Jeff Geerling/Season 2025/s2025e122699 - A tiny AI supercomputer for your desk-thumb.jpg", ~U[2026-01-03 01:56:22Z], 58868] 12:56:22.833 [debug] QUERY OK source="media_metadata" db=1.1ms INSERT INTO "media_metadata" ("metadata_filepath","thumbnail_filepath","media_item_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5) RETURNING "id" ["/config/metadata/media_items/58868/metadata.json.gz", "/config/metadata/media_items/58868/thumbnail.jpg", 58868, ~U[2026-01-03 01:56:22Z], ~U[2026-01-03 01:56:22Z]] 12:56:22.834 [debug] QUERY OK db=0.7ms commit [] 12:56:22.865 [debug] QUERY OK source="media_items" db=2.4ms idle=87.4ms UPDATE "media_items" SET "media_size_bytes" = ?, "updated_at" = ? WHERE "id" = ? [101676271, ~U[2026-01-03 01:56:22Z], 58868] 12:56:22.865 [info] User scripts lifecyle file either not present or is empty. Skipping. 12:56:22.868 [info] {"args":{"id":58868},"id":202119,"meta":{},"state":"success","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":80276258,"event":"job:stop","queue_time":20091587793,"attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 12:56:22.876 [info] {"args":{"id":58872},"id":202121,"meta":{},"system_time":1767405382876496491,"max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 12:56:22.877 [debug] QUERY OK source="media_items" db=0.4ms queue=0.2ms idle=101.8ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [58872] 12:56:22.878 [info] User scripts lifecyle file either not present or is empty. Skipping. 12:56:22.879 [debug] QUERY OK source="sources" db=0.6ms queue=0.1ms idle=43.9ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [8] 12:56:22.880 [debug] QUERY OK source="media_profiles" db=0.5ms queue=0.1ms idle=14.8ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 12:56:22.882 [debug] QUERY OK source="media_items" db=0.5ms queue=0.1ms idle=12.8ms SELECT 1 FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) LIMIT 1 [58872] 12:56:22.883 [debug] QUERY OK source="media_metadata" db=0.2ms idle=7.2ms SELECT m0."id", m0."metadata_filepath", m0."thumbnail_filepath", m0."media_item_id", m0."inserted_at", m0."updated_at", m0."media_item_id" FROM "media_metadata" AS m0 WHERE (m0."media_item_id" = ?) [58872] 12:56:22.884 [debug] QUERY OK source="media_profiles" db=0.2ms queue=0.1ms idle=6.4ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 12:56:22.885 [debug] QUERY OK source="settings" db=0.2ms idle=6.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:56:22.886 [debug] QUERY OK source="settings" db=0.3ms queue=0.1ms idle=5.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:56:22.887 [debug] Running yt-dlp command for action: get_downloadable_status 12:56:22.889 [debug] QUERY OK source="settings" db=0.4ms idle=7.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:56:22.890 [debug] QUERY OK source="settings" db=0.6ms idle=6.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:56:22.891 [debug] QUERY OK source="settings" db=0.5ms idle=6.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:56:22.892 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=ZRB7pjRVVkI --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/7f/0e/7f0e79fcad42b68408d00c778aafc5a1cada5b7e012ba2d32a757abed445362a.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 12:56:26.734 [info] {"args":{"id":10},"id":202878,"meta":{},"system_time":1767405386734414186,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 12:56:26.735 [debug] QUERY OK source="sources" db=0.4ms idle=1959.7ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [10] 12:56:26.736 [debug] QUERY OK source="settings" db=0.6ms queue=0.1ms idle=1960.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:56:26.737 [debug] QUERY OK source="media_profiles" db=0.7ms queue=0.1ms idle=1014.0ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 12:56:26.738 [debug] QUERY OK source="settings" db=0.5ms idle=11.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:56:26.738 [debug] Fetching recent media IDs from YouTube API for playlist: UUmHz7DQbbkcY_UoWY8bBJLw 12:56:26.740 [debug] QUERY OK source="settings" db=1.6ms queue=0.1ms idle=4.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:56:26.741 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 12:56:27.082 [debug] QUERY OK source="media_items" db=4.0ms idle=342.4ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND m0."media_id" IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [10, "PhjtM9ePmYY", "BYRqpIciNLg", "KKoDQ42Fcpk", "AifAIqHezb8", "sjsS60OTXSQ", "KVouvdlUtGQ", "Th4RJNVZN3Q", "a9Zj-iWYC4w", "Z2_oFD9DMd0", "OW9WywZF_d4", "hFSwWzxrqUA", "XsPrNwyLDJM", "9NUcKPnPMEw", "GvP1jo9RstE", "8jul3DEwgMY", "e4K0Co-JeKQ", "wxoYf3KBlis", "YFQm8Hk73ug", "iu5rnQkfO6M", "RESslu3Bhuk", "vn9VDbacUgQ", "mLozqDnhqpQ", "GWXCCBsOMSg", "OXIpbrvFxfE", "hbZb1Q0mM7k", "lj2JTO1L1Tc", "dGjMw1SkmjU", "vBQFfmlTK_4", "91WqepC8kS0", "UUZfxQhKmfA", "aPsq5nqvhxg", "AJ7atBkisOU", "2fZ0nkP5dfo", "qKZXQGCLRJY", "F26dxTMmW10", "cYPuhhATDXc", "uLrOyIpjkZ8", "kDu56nXRqGQ", "I4lBTlClwww", "h23xksD0dN0", "SgameZUfeGo", "NPgbgiRJCxA", "-v88e4T8i_E", "HkgV_-nJOuE", "3h1vM0lIrpM", "gjExqY_iB38", "5ScP_aPBEiQ", "t5CkW-CKTZs", "gKKRYcy4BbU", ...] 12:56:27.086 [debug] QUERY OK source="settings" db=0.5ms idle=350.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:56:27.088 [debug] QUERY OK source="settings" db=0.5ms queue=0.1ms idle=349.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:56:27.088 [debug] Running yt-dlp command for action: get_media_attributes 12:56:27.090 [debug] QUERY OK source="settings" db=0.5ms idle=351.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:56:27.091 [debug] QUERY OK source="settings" db=0.3ms idle=350.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:56:27.092 [debug] QUERY OK source="settings" db=0.5ms idle=9.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:56:27.093 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=Z2_oFD9DMd0 --simulate --skip-download --output /downloads/Switch Angel/Season %(upload_date>%Y)S/s%(upload_date>%Y)Se%(upload_date>%m%d)S00 - %(title)S.%(ext)S --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --print-to-file %(.{id,title,live_status,original_url,description,aspect_ratio,duration,upload_date,timestamp,playlist_index,filename})j /tmp/pinchflat/data/46/77/4677f12a2c7764f5576ab1ca5885b57962fd58fe19340d32b7866ab00adffbec.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 12:56:29.953 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=ZRB7pjRVVkI --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/7f/0e/7f0e79fcad42b68408d00c778aafc5a1cada5b7e012ba2d32a757abed445362a.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 12:56:29.953 [debug] Running yt-dlp command for action: download 12:56:29.953 [debug] QUERY OK source="settings" db=0.2ms idle=1178.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:56:29.954 [debug] QUERY OK source="settings" db=0.1ms idle=1178.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:56:29.954 [debug] QUERY OK source="settings" db=0.2ms idle=1179.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:56:29.955 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=ZRB7pjRVVkI --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --embed-subs --sub-langs en --write-thumbnail --convert-thumbnail jpg --output thumbnail:/downloads/Jeff Geerling/Season %(upload_date>%Y)S/s%(upload_date>%Y)Se%(upload_date>%m%d)S99 - %(title)S-thumb.%(ext)S --embed-thumbnail --convert-thumbnail jpg --write-info-json --clean-info-json --embed-metadata --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --sponsorblock-mark sponsor,intro,outro,selfpromo,preview,filler,interaction,music_offtopic --output /downloads/Jeff Geerling/Season %(upload_date>%Y)S/s%(upload_date>%Y)Se%(upload_date>%m%d)S99 - %(title)S.%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/73/4c/734c3942873acfafae63edaaa229c90d5c968fe45a1f57b7b36969a28ba1634e.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 12:56:31.619 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=Z2_oFD9DMd0 --simulate --skip-download --output /downloads/Switch Angel/Season %(upload_date>%Y)S/s%(upload_date>%Y)Se%(upload_date>%m%d)S00 - %(title)S.%(ext)S --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --print-to-file %(.{id,title,live_status,original_url,description,aspect_ratio,duration,upload_date,timestamp,playlist_index,filename})j /tmp/pinchflat/data/46/77/4677f12a2c7764f5576ab1ca5885b57962fd58fe19340d32b7866ab00adffbec.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 1 with: ERROR: [youtube] Z2_oFD9DMd0: This live event will begin in a few moments. 12:56:31.619 [error] Error creating media item 'Z2_oFD9DMd0' from URL: {:error, "ERROR: [youtube] Z2_oFD9DMd0: This live event will begin in a few moments.\n", 1} 12:56:31.621 [debug] QUERY OK source="media_items" db=2.1ms idle=1665.9ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [10] 12:56:31.626 [debug] QUERY OK source="tasks" db=1.0ms idle=887.6ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [202902, 10, ~U[2026-01-03 01:56:31Z], ~U[2026-01-03 01:56:31Z]] 12:56:31.628 [info] {"args":{"id":10},"id":202878,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":4892510,"event":"job:stop","queue_time":439714,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 12:56:35.791 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=3D5q3NWEMZY --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --embed-subs --sub-langs en --write-thumbnail --convert-thumbnail jpg --output thumbnail:/downloads/Jeff Geerling/Season %(upload_date>%Y)S/s%(upload_date>%Y)Se%(upload_date>%m%d)S99 - %(title)S-thumb.%(ext)S --embed-thumbnail --convert-thumbnail jpg --write-info-json --clean-info-json --embed-metadata --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --sponsorblock-mark sponsor,intro,outro,selfpromo,preview,filler,interaction,music_offtopic --output /downloads/Jeff Geerling/Season %(upload_date>%Y)S/s%(upload_date>%Y)Se%(upload_date>%m%d)S99 - %(title)S.%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/7f/89/7f893aabe32442940868fbe4108d89a6dc2f6eb3b070f766a3117219a883acda.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: WARNING: The extractor specified to use impersonation for this download, but no impersonate target is available. If you encounter errors, then see https://github.com/yt-dlp/yt-dlp#impersonation for information on installing the required dependencies 12:56:35.973 [debug] Running yt-dlp command for action: download_thumbnail 12:56:35.976 [debug] QUERY OK source="settings" db=0.6ms idle=1200.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:56:35.978 [debug] QUERY OK source="settings" db=0.7ms queue=0.9ms idle=1201.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:56:35.979 [debug] QUERY OK source="settings" db=0.9ms idle=1203.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:56:35.980 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=3D5q3NWEMZY --no-simulate --skip-download --write-thumbnail --convert-thumbnail jpg --output /config/metadata/media_items/58865/thumbnail.%(ext)s --print-to-file after_move:%()j /tmp/pinchflat/data/34/5f/345fefb72e12b38bbcccadc3c762f37611fb56165345990ad9da2c808ce62258.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 12:56:36.764 [info] {"args":{"id":6},"id":202879,"meta":{},"system_time":1767405396764296153,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 12:56:36.765 [debug] QUERY OK source="sources" db=0.4ms idle=788.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [6] 12:56:36.766 [debug] QUERY OK source="settings" db=0.3ms idle=787.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:56:36.766 [debug] QUERY OK source="media_profiles" db=0.3ms idle=786.6ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 12:56:36.767 [debug] QUERY OK source="settings" db=0.3ms queue=0.1ms idle=2.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:56:36.767 [debug] Fetching recent media IDs from YouTube API for playlist: UUg0m_Ah8P_MQbnn77-vYnYw 12:56:36.768 [debug] QUERY OK source="settings" db=0.3ms idle=2.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:56:36.768 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 12:56:37.120 [debug] QUERY OK source="media_items" db=4.2ms idle=349.6ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND m0."media_id" IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [6, "9i6Qm3LV89c", "2PC3HH4izX4", "dJLpdoPNdZ8", "lqRHAbkn9bo", "nlYgNjtr904", "uHKLZ8LcCJA", "V3LW3EWUxqE", "XaTvV6zJEXk", "AjnHxtnxMhk", "vuJTLm11QmQ", "vUzRuvCi6lw", "NlxSd2y_gfI", "ivcFXtMGdE8", "m17ugzx_Ab4", "o5QiLKbHeMI", "moqdU9sMrRk", "Yi55tGTEMqQ", "rHliVvnQ5Pg", "nCZSTFM-v9k", "uasm2RENDH4", "musiLNtEyRY", "uSvqlME0IsI", "Yo0hmtg8LNc", "HOFD3h9Up9w", "uibJMXaSB7c", "NGq1EoY_r2I", "IL-UZlbO3zI", "-_txeeBP6dg", "iH7BiZvsczM", "rIKuiZVHfZo", "HRw20b6hb_s", "xOQPha-de4A", "L6IXwj-_X1k", "_7--BDD2pxk", "Xaq53-12iW8", "bfb-ZBwdvpo", "3DLbHio3ivA", "xhpwyar65ms", "UzEr8RISXds", "tHU6PeO4WDs", "2z1AaBGzA1g", "y-t3hyj7Mz8", "5ZUXEQ6d0dM", "pn8GF5HaKZc", "wH3XASrC2DA", "C_oeOAG0G5E", "c8gYHg1lZCg", "cPEXUpZ6CWk", "jST7T0L_k_w", ...] 12:56:37.127 [debug] QUERY OK source="media_items" db=3.9ms idle=356.7ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [6] 12:56:37.186 [debug] QUERY OK source="tasks" db=3.0ms idle=414.6ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [202903, 6, ~U[2026-01-03 01:56:37Z], ~U[2026-01-03 01:56:37Z]] 12:56:37.188 [info] {"args":{"id":6},"id":202879,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":422225,"event":"job:stop","queue_time":877338,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 12:56:42.456 [info] {"source":"oban","duration":3917,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:56:44.124 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=3D5q3NWEMZY --no-simulate --skip-download --write-thumbnail --convert-thumbnail jpg --output /config/metadata/media_items/58865/thumbnail.%(ext)s --print-to-file after_move:%()j /tmp/pinchflat/data/34/5f/345fefb72e12b38bbcccadc3c762f37611fb56165345990ad9da2c808ce62258.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 12:56:44.125 [debug] QUERY OK db=0.1ms idle=1350.7ms begin [] 12:56:44.128 [debug] QUERY OK source="media_items" db=2.6ms UPDATE "media_items" SET "media_downloaded_at" = ?, "media_filepath" = ?, "metadata_filepath" = ?, "nfo_filepath" = ?, "predicted_media_filepath" = ?, "subtitle_filepaths" = ?, "thumbnail_filepath" = ?, "updated_at" = ? WHERE "id" = ? [~U[2026-01-03 01:56:35Z], "/downloads/Jeff Geerling/Season 2026/s2026e010299 - $1m server vs $600 router.mp4", "/downloads/Jeff Geerling/Season 2026/s2026e010299 - $1m server vs $600 router.info.json", "/downloads/Jeff Geerling/Season 2026/s2026e010299 - $1m server vs $600 router.nfo", "/downloads/Jeff Geerling/Season 2026/s2026e010299 - $1m server vs $600 router.mp4", [["en", "/downloads/Jeff Geerling/Season 2026/s2026e010299 - $1m server vs $600 router.en.srt"]], "/downloads/Jeff Geerling/Season 2026/s2026e010299 - $1m server vs $600 router-thumb.jpg", ~U[2026-01-03 01:56:44Z], 58865] 12:56:44.130 [debug] QUERY OK source="media_metadata" db=1.6ms INSERT INTO "media_metadata" ("metadata_filepath","thumbnail_filepath","media_item_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5) RETURNING "id" ["/config/metadata/media_items/58865/metadata.json.gz", "/config/metadata/media_items/58865/thumbnail.jpg", 58865, ~U[2026-01-03 01:56:44Z], ~U[2026-01-03 01:56:44Z]] 12:56:44.131 [debug] QUERY OK db=1.0ms commit [] 12:56:44.145 [debug] QUERY OK source="media_items" db=4.2ms idle=1365.8ms UPDATE "media_items" SET "media_size_bytes" = ?, "updated_at" = ? WHERE "id" = ? [155679016, ~U[2026-01-03 01:56:44Z], 58865] 12:56:44.145 [info] User scripts lifecyle file either not present or is empty. Skipping. 12:56:44.146 [info] {"args":{"id":58865},"id":202117,"meta":{},"state":"success","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":102687872,"event":"job:stop","queue_time":20095456713,"attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 12:56:44.155 [info] {"args":{"id":58875},"id":202123,"meta":{},"system_time":1767405404155200190,"max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 12:56:44.156 [debug] QUERY OK source="media_items" db=0.6ms idle=366.8ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [58875] 12:56:44.156 [info] User scripts lifecyle file either not present or is empty. Skipping. 12:56:44.158 [debug] QUERY OK source="sources" db=0.6ms queue=0.1ms idle=25.2ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [8] 12:56:44.159 [debug] QUERY OK source="media_profiles" db=0.6ms queue=0.1ms idle=13.3ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 12:56:44.160 [debug] QUERY OK source="media_items" db=0.5ms queue=0.1ms idle=13.7ms SELECT 1 FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) LIMIT 1 [58875] 12:56:44.163 [debug] QUERY OK source="media_metadata" db=0.2ms idle=8.0ms SELECT m0."id", m0."metadata_filepath", m0."thumbnail_filepath", m0."media_item_id", m0."inserted_at", m0."updated_at", m0."media_item_id" FROM "media_metadata" AS m0 WHERE (m0."media_item_id" = ?) [58875] 12:56:44.164 [debug] QUERY OK source="media_profiles" db=0.2ms idle=7.3ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 12:56:44.164 [debug] QUERY OK source="settings" db=0.1ms idle=6.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:56:44.164 [debug] QUERY OK source="settings" db=0.1ms idle=5.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:56:44.165 [debug] Running yt-dlp command for action: get_downloadable_status 12:56:44.169 [debug] QUERY OK source="settings" db=0.3ms idle=7.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:56:44.170 [debug] QUERY OK source="settings" db=0.6ms idle=5.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:56:44.170 [debug] QUERY OK source="settings" db=0.4ms idle=6.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:56:44.170 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=8X2Y62JGDCo --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/02/44/02446c2752e0ee958e99da412d8530d662523ccb1449771d1936d3f8f2b98203.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 12:56:51.399 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=8X2Y62JGDCo --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/02/44/02446c2752e0ee958e99da412d8530d662523ccb1449771d1936d3f8f2b98203.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 12:56:51.399 [debug] Running yt-dlp command for action: download 12:56:51.400 [debug] QUERY OK source="settings" db=0.6ms idle=1622.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:56:51.401 [debug] QUERY OK source="settings" db=0.3ms idle=1623.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:56:51.402 [debug] QUERY OK source="settings" db=0.6ms idle=1624.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:56:51.402 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=8X2Y62JGDCo --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --embed-subs --sub-langs en --write-thumbnail --convert-thumbnail jpg --output thumbnail:/downloads/Jeff Geerling/Season %(upload_date>%Y)S/s%(upload_date>%Y)Se%(upload_date>%m%d)S99 - %(title)S-thumb.%(ext)S --embed-thumbnail --convert-thumbnail jpg --write-info-json --clean-info-json --embed-metadata --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --sponsorblock-mark sponsor,intro,outro,selfpromo,preview,filler,interaction,music_offtopic --output /downloads/Jeff Geerling/Season %(upload_date>%Y)S/s%(upload_date>%Y)Se%(upload_date>%m%d)S99 - %(title)S.%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/50/e6/50e65329b025b90d8e34586689c33f4545fb63e23081fd13d6995abb127643dc.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 12:56:55.814 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=ZRB7pjRVVkI --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --embed-subs --sub-langs en --write-thumbnail --convert-thumbnail jpg --output thumbnail:/downloads/Jeff Geerling/Season %(upload_date>%Y)S/s%(upload_date>%Y)Se%(upload_date>%m%d)S99 - %(title)S-thumb.%(ext)S --embed-thumbnail --convert-thumbnail jpg --write-info-json --clean-info-json --embed-metadata --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --sponsorblock-mark sponsor,intro,outro,selfpromo,preview,filler,interaction,music_offtopic --output /downloads/Jeff Geerling/Season %(upload_date>%Y)S/s%(upload_date>%Y)Se%(upload_date>%m%d)S99 - %(title)S.%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/73/4c/734c3942873acfafae63edaaa229c90d5c968fe45a1f57b7b36969a28ba1634e.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: WARNING: The extractor specified to use impersonation for this download, but no impersonate target is available. If you encounter errors, then see https://github.com/yt-dlp/yt-dlp#impersonation for information on installing the required dependencies 12:56:55.956 [debug] Running yt-dlp command for action: download_thumbnail 12:56:55.959 [debug] QUERY OK source="settings" db=0.6ms idle=1181.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:56:55.960 [debug] QUERY OK source="settings" db=0.4ms idle=1182.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:56:55.961 [debug] QUERY OK source="settings" db=0.5ms idle=1136.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:56:55.961 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=ZRB7pjRVVkI --no-simulate --skip-download --write-thumbnail --convert-thumbnail jpg --output /config/metadata/media_items/58872/thumbnail.%(ext)s --print-to-file after_move:%()j /tmp/pinchflat/data/85/a6/85a6ce76fff7bf2603b0e7e01c3d49d482d062e81c9082d854f1bd494aad0557.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 12:57:00.107 [info] {"source":"oban","duration":628,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 12:57:00.855 [info] {"args":{"id":9},"id":202880,"meta":{},"system_time":1767405420855693960,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 12:57:00.856 [debug] QUERY OK source="sources" db=0.3ms idle=1079.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [9] 12:57:00.857 [debug] QUERY OK source="settings" db=0.3ms idle=1011.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:57:00.857 [debug] QUERY OK source="media_profiles" db=0.2ms idle=749.9ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 12:57:00.858 [debug] QUERY OK source="settings" db=0.3ms idle=9.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:57:00.858 [debug] Fetching recent media IDs from YouTube API for playlist: UUy0Pr5u-MwGXXzp_GDd4m_g 12:57:00.858 [debug] QUERY OK source="settings" db=0.1ms idle=3.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:57:00.859 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 12:57:01.290 [debug] QUERY OK source="media_items" db=5.8ms idle=427.4ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND m0."media_id" IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [9, "97DBlIPSMkI", "V7Q9VnfzRqE", "Nub2m3iioSw", "Tpk6NNZubqU", "L4Eh-MtBFFk", "sa8p75KJqOc", "2gpPC0vsry0", "B2l4YfAav6M", "iL1qKxcaZnU", "NH5AAcLn03o", "8fOaCUvVQpY", "8aQ7sJ9EyaY", "ld0ngHU3YQ0", "uKzsA5kc8jw", "_A1dxw_T6dw", "TFVA0Bc5ajA", "IgFSOa0RBxs", "fGAe2cenBhs", "a6_0p8e42Y4", "vnR7jnJYN-k", "db6_ragog48", "SMKDYoXrZzw", "-fM_uGwlRlU", "kRxJ2g3T0zs", "GgU7L-z0kbA", "yFZJ6Qb8mDY", "YkyTbtgcfJU", "k01ARI01oMU", "ToFKhGfGgc0", "MU8JlJIuwh4", "IY36QIh6VG8", "brtcZFHW0P4", "A39Glu9I9fk", "Ib_1jixUkLw", "c9UIDwF7oS4", "CcSE-YHRJP4", "Tpmb_mTKuhs", "yNbz6f5dMLE", "BAVQcOWZi-Y", "Fa7RxeYNUTw", "teIoBQdGT5s", "UqykI_3CT-g", "vBeWkDTK6Eg", "qOp_nyKqmic", "fEqSlPpXHYk", "lII4lxNpPVg", "BaxD8BI3wI4", "me_afppRbyI", "C69B2k3fAvs", ...] 12:57:01.297 [debug] QUERY OK source="media_items" db=2.5ms queue=0.1ms idle=437.7ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [9] 12:57:01.301 [debug] QUERY OK source="tasks" db=0.8ms idle=441.6ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [202904, 9, ~U[2026-01-03 01:57:01Z], ~U[2026-01-03 01:57:01Z]] 12:57:01.303 [info] {"args":{"id":9},"id":202880,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":446059,"event":"job:stop","queue_time":787759,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 12:57:03.844 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=ZRB7pjRVVkI --no-simulate --skip-download --write-thumbnail --convert-thumbnail jpg --output /config/metadata/media_items/58872/thumbnail.%(ext)s --print-to-file after_move:%()j /tmp/pinchflat/data/85/a6/85a6ce76fff7bf2603b0e7e01c3d49d482d062e81c9082d854f1bd494aad0557.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 12:57:03.844 [debug] QUERY OK db=0.1ms idle=1067.5ms begin [] 12:57:03.846 [debug] QUERY OK source="media_items" db=0.8ms UPDATE "media_items" SET "media_downloaded_at" = ?, "media_filepath" = ?, "metadata_filepath" = ?, "nfo_filepath" = ?, "predicted_media_filepath" = ?, "subtitle_filepaths" = ?, "thumbnail_filepath" = ?, "updated_at" = ? WHERE "id" = ? [~U[2026-01-03 01:56:55Z], "/downloads/Jeff Geerling/Season 2025/s2025e122299 - NIST's NTP clock was microseconds from disaster.mp4", "/downloads/Jeff Geerling/Season 2025/s2025e122299 - NIST's NTP clock was microseconds from disaster.info.json", "/downloads/Jeff Geerling/Season 2025/s2025e122299 - NIST's NTP clock was microseconds from disaster.nfo", "/downloads/Jeff Geerling/Season 2025/s2025e122299 - NIST's NTP clock was microseconds from disaster.mp4", [["en", "/downloads/Jeff Geerling/Season 2025/s2025e122299 - NIST's NTP clock was microseconds from disaster.en.srt"]], "/downloads/Jeff Geerling/Season 2025/s2025e122299 - NIST's NTP clock was microseconds from disaster-thumb.jpg", ~U[2026-01-03 01:57:03Z], 58872] 12:57:03.847 [debug] QUERY OK source="media_metadata" db=1.0ms INSERT INTO "media_metadata" ("metadata_filepath","thumbnail_filepath","media_item_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5) RETURNING "id" ["/config/metadata/media_items/58872/metadata.json.gz", "/config/metadata/media_items/58872/thumbnail.jpg", 58872, ~U[2026-01-03 01:57:03Z], ~U[2026-01-03 01:57:03Z]] 12:57:03.848 [debug] QUERY OK db=0.3ms commit [] 12:57:03.872 [debug] QUERY OK source="media_items" db=1.8ms idle=1093.2ms UPDATE "media_items" SET "media_size_bytes" = ?, "updated_at" = ? WHERE "id" = ? [31435418, ~U[2026-01-03 01:57:03Z], 58872] 12:57:03.872 [info] User scripts lifecyle file either not present or is empty. Skipping. 12:57:03.873 [info] {"args":{"id":58872},"id":202121,"meta":{},"state":"success","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":40996387,"event":"job:stop","queue_time":20167874801,"attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 12:57:03.881 [info] {"args":{"id":58878},"id":202125,"meta":{},"system_time":1767405423881243519,"max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 12:57:03.882 [debug] QUERY OK source="media_items" db=0.5ms idle=33.5ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [58878] 12:57:03.882 [info] User scripts lifecyle file either not present or is empty. Skipping. 12:57:03.883 [debug] QUERY OK source="sources" db=0.7ms idle=26.2ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [8] 12:57:03.884 [debug] QUERY OK source="media_profiles" db=0.6ms idle=11.4ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 12:57:03.885 [debug] QUERY OK source="media_items" db=0.4ms idle=11.2ms SELECT 1 FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) LIMIT 1 [58878] 12:57:03.886 [debug] QUERY OK source="media_metadata" db=0.1ms idle=5.1ms SELECT m0."id", m0."metadata_filepath", m0."thumbnail_filepath", m0."media_item_id", m0."inserted_at", m0."updated_at", m0."media_item_id" FROM "media_metadata" AS m0 WHERE (m0."media_item_id" = ?) [58878] 12:57:03.886 [debug] QUERY OK source="media_profiles" db=0.2ms idle=4.3ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 12:57:03.887 [debug] QUERY OK source="settings" db=0.1ms idle=3.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:57:03.887 [debug] QUERY OK source="settings" db=0.1ms idle=3.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:57:03.888 [debug] Running yt-dlp command for action: get_downloadable_status 12:57:03.889 [debug] QUERY OK source="settings" db=0.1ms idle=3.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:57:03.889 [debug] QUERY OK source="settings" db=0.1ms idle=2.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:57:03.889 [debug] QUERY OK source="settings" db=0.2ms idle=2.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:57:03.890 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=x4_RsUxRjKU --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/d7/77/d777e1cab040a06f683f62766f157a91a0a31df5f8fd00d5299528cc24294e8d.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 12:57:11.788 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=x4_RsUxRjKU --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/d7/77/d777e1cab040a06f683f62766f157a91a0a31df5f8fd00d5299528cc24294e8d.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 12:57:11.789 [debug] Running yt-dlp command for action: download 12:57:11.789 [debug] QUERY OK source="settings" db=0.4ms idle=1012.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:57:11.790 [debug] QUERY OK source="settings" db=0.2ms idle=911.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:57:11.790 [debug] QUERY OK source="settings" db=0.3ms idle=13.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:57:11.791 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=x4_RsUxRjKU --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --embed-subs --sub-langs en --write-thumbnail --convert-thumbnail jpg --output thumbnail:/downloads/Jeff Geerling/Season %(upload_date>%Y)S/s%(upload_date>%Y)Se%(upload_date>%m%d)S99 - %(title)S-thumb.%(ext)S --embed-thumbnail --convert-thumbnail jpg --write-info-json --clean-info-json --embed-metadata --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --sponsorblock-mark sponsor,intro,outro,selfpromo,preview,filler,interaction,music_offtopic --output /downloads/Jeff Geerling/Season %(upload_date>%Y)S/s%(upload_date>%Y)Se%(upload_date>%m%d)S99 - %(title)S.%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/6b/26/6b266b584048300c33e5a058754bea4db671f227740bcde242e0ab18ff14d29e.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 12:57:12.460 [info] {"source":"oban","duration":2090,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:57:17.911 [info] {"args":{"id":11},"id":202881,"meta":{},"system_time":1767405437911597329,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 12:57:17.912 [debug] QUERY OK source="sources" db=0.3ms queue=0.1ms idle=135.2ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [11] 12:57:17.913 [debug] QUERY OK source="settings" db=0.2ms queue=0.1ms idle=136.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:57:17.914 [debug] QUERY OK source="media_profiles" db=0.2ms idle=136.7ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 12:57:17.914 [debug] QUERY OK source="settings" db=0.2ms queue=0.1ms idle=9.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:57:17.915 [debug] Fetching recent media IDs from YouTube API for playlist: UUJ901NqoRaXMnIm7aOjLyuA 12:57:17.915 [debug] QUERY OK source="settings" db=0.3ms queue=0.1ms idle=3.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:57:17.916 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 12:57:18.233 [info] GET /sources 12:57:18.233 [debug] Processing with PinchflatWeb.Sources.SourceController.index/2 Parameters: %{} Pipelines: [:browser] 12:57:18.234 [debug] QUERY OK source="settings" db=0.7ms idle=321.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:57:18.236 [debug] QUERY OK source="settings" db=1.3ms queue=0.1ms idle=321.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:57:18.239 [debug] QUERY OK source="settings" db=1.2ms queue=0.2ms idle=323.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:57:18.241 [debug] QUERY OK source="settings" db=0.2ms queue=0.1ms idle=326.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:57:18.242 [debug] QUERY OK source="settings" db=0.2ms queue=0.1ms idle=326.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:57:18.287 [debug] QUERY OK source="sources" db=44.4ms queue=0.1ms idle=8.3ms SELECT count(s0."id") FROM "sources" AS s0 INNER JOIN "media_profiles" AS m1 ON m1."id" = s0."media_profile_id" LEFT OUTER JOIN (SELECT count(sm0."id") AS "downloaded_count", sm0."source_id" AS "source_id", sum(sm0."media_size_bytes") AS "media_size_bytes" FROM "media_items" AS sm0 WHERE (NOT (sm0."media_filepath" IS NULL)) GROUP BY sm0."source_id") AS s2 ON s2."source_id" = s0."id" LEFT OUTER JOIN (SELECT count(sm0."id") AS "pending_count", sm0."source_id" AS "source_id" FROM "media_items" AS sm0 INNER JOIN "sources" AS ss1 ON ss1."id" = sm0."source_id" INNER JOIN "media_profiles" AS sm2 ON sm2."id" = ss1."media_profile_id" WHERE (((((NOT (NOT (sm0."media_filepath" IS NULL)) AND NOT (sm0."prevent_download" = 1)) AND ((ss1."download_cutoff_date" IS NULL) OR date(sm0."uploaded_at") >= ss1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((ss1."title_filter_regex" IS NULL) OR regexp_like(sm0."title", ss1."title_filter_regex"))) AND (((ss1."min_duration_seconds" IS NULL) OR duration_seconds >= ss1."min_duration_seconds") AND ((ss1."max_duration_seconds" IS NULL) OR duration_seconds <= ss1."max_duration_seconds"))) GROUP BY sm0."source_id") AS s3 ON (s3."source_id" = s0."id") AND (s2."source_id" = s0."id") WHERE ((s0."marked_for_deletion_at" IS NULL) AND (m1."marked_for_deletion_at" IS NULL)) [] 12:57:18.331 [debug] QUERY OK source="sources" db=41.6ms queue=0.2ms idle=53.6ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", coalesce(s2."downloaded_count", 0), coalesce(s3."pending_count", 0), coalesce(s2."media_size_bytes", 0), m1."id", m1."name", m1."redownload_delay_days", m1."output_path_template", m1."download_subs", m1."download_auto_subs", m1."embed_subs", m1."sub_langs", m1."download_thumbnail", m1."embed_thumbnail", m1."download_source_images", m1."download_metadata", m1."embed_metadata", m1."download_nfo", m1."sponsorblock_behaviour", m1."sponsorblock_categories", m1."shorts_behaviour", m1."livestream_behaviour", m1."audio_track", m1."preferred_resolution", m1."media_container", m1."marked_for_deletion_at", m1."inserted_at", m1."updated_at" FROM "sources" AS s0 INNER JOIN "media_profiles" AS m1 ON m1."id" = s0."media_profile_id" LEFT OUTER JOIN (SELECT count(sm0."id") AS "downloaded_count", sm0."source_id" AS "source_id", sum(sm0."media_size_bytes") AS "media_size_bytes" FROM "media_items" AS sm0 WHERE (NOT (sm0."media_filepath" IS NULL)) GROUP BY sm0."source_id") AS s2 ON s2."source_id" = s0."id" LEFT OUTER JOIN (SELECT count(sm0."id") AS "pending_count", sm0."source_id" AS "source_id" FROM "media_items" AS sm0 INNER JOIN "sources" AS ss1 ON ss1."id" = sm0."source_id" INNER JOIN "media_profiles" AS sm2 ON sm2."id" = ss1."media_profile_id" WHERE (((((NOT (NOT (sm0."media_filepath" IS NULL)) AND NOT (sm0."prevent_download" = 1)) AND ((ss1."download_cutoff_date" IS NULL) OR date(sm0."uploaded_at") >= ss1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((ss1."title_filter_regex" IS NULL) OR regexp_like(sm0."title", ss1."title_filter_regex"))) AND (((ss1."min_duration_seconds" IS NULL) OR duration_seconds >= ss1."min_duration_seconds") AND ((ss1."max_duration_seconds" IS NULL) OR duration_seconds <= ss1."max_duration_seconds"))) GROUP BY sm0."source_id") AS s3 ON (s3."source_id" = s0."id") AND (s2."source_id" = s0."id") WHERE ((s0."marked_for_deletion_at" IS NULL) AND (m1."marked_for_deletion_at" IS NULL)) ORDER BY s0."custom_name" COLLATE NOCASE, s0."id" LIMIT ? OFFSET ? [10, 0] 12:57:18.337 [info] Sent 200 in 104ms 12:57:18.430 [debug] QUERY OK source="media_items" db=2.9ms idle=187.8ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND m0."media_id" IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [11, "1ji7g8qZJ_4", "xP5WmZg7OMg", "HBoV87Jndh8", "-zpzRklxMEo", "9AX85j6Lp4M", "p2U9d4FWDaI", "hfT6XVSa2xE", "qBOKYwe8NzA", "Cf5jL5JNq7k", "bAV0y2acB9c", "XE6JvrChQ_Q", "Efv456Ks9ms", "qgiJ4C5s46U", "KaVC_mTFqHk", "M6gat-hai0I", "_xwFJzOtQv0", "Ao-M_YvfhXY", "SKHWQwf0ago", "gmuFtWZG3v8", "H4oeJ87TMt4", "rS2fDo6mhS8", "aOF6Pe_bTeI", "x8B3Z91qkoE", "fVvYTWAHoBQ", "8r6xqWTqcPQ", "k677A--BwGE", "CSTtrz8t1eg", "w6Ej3Iim4Ic", "jO8S8_KX6p0", "tslsVdOjWFM", "dckL2BCDYmQ", "E3N8_pRRtGM", "qeOEDUgy5xA", "MIPvNqPwMxc", "V2GelRPp5fg", "jWH5H6Y6T-A", "1ObIAwtqt9k", "yVdv1xVggZ4", "Pxpz4211gMI", "UEUAHI0AZu4", "gitCR-iTofw", "eTg2rHYqUZc", "QnOIm4U7Dzs", "RYNFRbP4OWQ", "R3kNCz120XM", "vMflt2fJZYw", "4DkhBa_L_4E", "4IqFTPw6Mzk", "AepfCktyPLk", ...] 12:57:18.435 [debug] QUERY OK source="media_items" db=3.8ms idle=190.3ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [11] 12:57:18.439 [debug] QUERY OK source="tasks" db=0.3ms idle=8.8ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [202905, 11, ~U[2026-01-03 01:57:18Z], ~U[2026-01-03 01:57:18Z]] 12:57:18.441 [info] {"args":{"id":11},"id":202881,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":527655,"event":"job:stop","queue_time":734844,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 12:57:18.735 [info] GET /settings 12:57:18.735 [debug] Processing with PinchflatWeb.Settings.SettingController.show/2 Parameters: %{} Pipelines: [:browser] 12:57:18.744 [debug] QUERY OK source="settings" db=8.4ms idle=298.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:57:18.751 [debug] QUERY OK source="settings" db=6.5ms idle=306.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:57:18.752 [debug] QUERY OK source="settings" db=0.4ms idle=312.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:57:18.753 [debug] QUERY OK source="settings" db=0.4ms idle=311.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:57:18.755 [info] Sent 200 in 19ms 12:57:21.930 [info] GET /sources/11/media/58615/force_download 12:57:21.931 [debug] QUERY OK source="settings" db=0.3ms idle=153.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:57:21.932 [debug] QUERY OK source="settings" db=0.5ms idle=154.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:57:21.932 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 12:57:21.933 [error] #PID<0.9215.0> running PinchflatWeb.Endpoint (connection #PID<0.9214.0>, stream id 1) terminated Server: pinchflat.uiau7e.uncld.dev:80 (http) Request: GET /sources/11/media/58615/force_download ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/11/media/58615/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.9214.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/11/media/58615/force_download", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 45270}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "from" => "gptbot(at)openai.com", "host" => "pinchflat.uiau7e.uncld.dev", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.3; +https://openai.com/gptbot)", "via" => "2.0 Caddy", "x-forwarded-for" => "74.7.227.183", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https", "x-openai-host-hash" => "454925582" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.uiau7e.uncld.dev", method: "GET", owner: #PID<0.9215.0>, params: %{}, path_info: ["sources", "11", "media", "58615", "force_download"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.uiau7e.uncld.dev", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {10, 210, 0, 2}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"accept-encoding", "gzip, br, deflate"}, {"from", "gptbot(at)openai.com"}, {"host", "pinchflat.uiau7e.uncld.dev"}, {"user-agent", "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.3; +https://openai.com/gptbot)"}, {"via", "2.0 Caddy"}, {"x-forwarded-for", "74.7.227.183"}, {"x-forwarded-host", "pinchflat.uiau7e.uncld.dev"}, {"x-forwarded-proto", "https"}, {"x-openai-host-hash", "454925582"} ], request_path: "/sources/11/media/58615/force_download", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GIcV4qRatnHQzr0AAarh"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.9214.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/11/media/58615/force_download", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 45270}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "from" => "gptbot(at)openai.com", "host" => "pinchflat.uiau7e.uncld.dev", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.3; +https://openai.com/gptbot)", "via" => "2.0 Caddy", "x-forwarded-for" => "74.7.227.183", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https", "x-openai-host-hash" => "454925582" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/11/media/58615/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.9214.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/11/media/58615/force_download", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 45270}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "from" => "gptbot(at)openai.com", "host" => "pinchflat.uiau7e.uncld.dev", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.3; +https://openai.com/gptbot)", "via" => "2.0 Caddy", "x-forwarded-for" => "74.7.227.183", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https", "x-openai-host-hash" => "454925582" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.uiau7e.uncld.dev", method: "GET", owner: #PID<0.9215.0>, params: %{}, path_info: ["sources", "11", "media", "58615", "force_download"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.uiau7e.uncld.dev", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {10, 210, 0, 2}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"accept-encoding" (truncated) 12:57:39.398 [info] GET /media_profiles 12:57:39.398 [debug] Processing with PinchflatWeb.MediaProfiles.MediaProfileController.index/2 Parameters: %{} Pipelines: [:browser] 12:57:39.399 [debug] QUERY OK source="media_profiles" db=0.8ms idle=1621.8ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", (SELECT count(ss0."id") AS "result" FROM "sources" AS ss0 WHERE (ss0."media_profile_id" = m0."id")) FROM "media_profiles" AS m0 WHERE (m0."marked_for_deletion_at" IS NULL) ORDER BY m0."name" [] 12:57:39.400 [debug] QUERY OK source="settings" db=0.4ms idle=1623.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:57:39.401 [debug] QUERY OK source="settings" db=0.3ms queue=0.1ms idle=1624.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:57:39.403 [debug] QUERY OK source="settings" db=0.4ms idle=1442.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:57:39.406 [info] Sent 200 in 8ms 12:57:42.463 [info] {"source":"oban","duration":2898,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:57:57.029 [info] {"args":{"id":15},"id":202882,"meta":{},"system_time":1767405477029482223,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 12:57:57.031 [debug] QUERY OK source="sources" db=0.9ms idle=252.9ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [15] 12:57:57.032 [debug] QUERY OK source="settings" db=0.7ms idle=254.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:57:57.033 [debug] QUERY OK source="media_profiles" db=0.8ms queue=0.1ms idle=255.4ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 12:57:57.034 [debug] QUERY OK source="settings" db=0.6ms queue=0.1ms idle=11.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:57:57.035 [debug] Fetching recent media IDs from YouTube API for playlist: UU5qRAYQmCLx8hFGIiTWSQvA 12:57:57.036 [debug] QUERY OK source="settings" db=0.3ms queue=0.1ms idle=6.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:57:57.036 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 12:57:57.508 [debug] QUERY OK source="media_items" db=2.7ms idle=474.8ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND m0."media_id" IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [15, "EMmIdkwn6a4", "EBT3EIoJpDc", "P2j2jM33fbk", "KuYhCywx8JM", "EteM8YNAFu8", "-KN9sfrroJA", "35D6yzUQM8I", "pIqvmN8ePkc", "rR5RqL2cjPE", "B2mmx85ZIsE", "b-jTeTJ1ekk", "Qa4dYWqfgmg", "TZZgrQEsl4c", "hMFEigXIhgA", "yf8ozrYeFEk", "QoCmQRZKU_c", "Qa9rFTiItTE", "Kxw9tq49VBM", "aLj4QgEf7gQ", "-D7c5td5vhw", "UNJUpex0blc", "Afa2PJq3okY", "r9A1srY7LdU", "m6YZoOWrLlk", "RKSlnQcuZt4", "qEjkDPJmKIo", "fZirHVq8wp0", "jdB56zAMJgE", "F92Oe7JuDtI", "luEgOCX58gw", "9CkNfdQpsuo", "eC3Mv474A8c", "mq6lsIgLLqY", "Wqmn4OTW6Fw", "4yYMQFLVRNc", "TsdMEmH2Lsw", "HQeTYLxz6iY", "V-JtebgnFoM", "2cXS3i36Kh8", "wznCZtGitN8", "2tYVGxZMOiQ", "9bxljq6ljbE", "9hHVjpo_HDA", "w8bqGx4ZtYQ", "yFYGd9irJ5k", "WTfhL2-cT1U", "LCR3ZsqWhuo", "Tj09jojsiaM", "_GZvVqjqlM0", ...] 12:57:57.515 [debug] QUERY OK source="media_items" db=4.3ms idle=478.4ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [15] 12:57:57.517 [debug] QUERY OK source="tasks" db=0.3ms idle=481.2ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [202906, 15, ~U[2026-01-03 01:57:57Z], ~U[2026-01-03 01:57:57Z]] 12:57:57.518 [info] {"args":{"id":15},"id":202882,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":488322,"event":"job:stop","queue_time":742688,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 12:58:00.109 [info] {"source":"oban","duration":325,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 12:58:02.041 [info] {"args":{"id":18},"id":202883,"meta":{},"system_time":1767405482041251689,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 12:58:02.043 [debug] QUERY OK source="sources" db=0.8ms idle=1265.1ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [18] 12:58:02.044 [debug] QUERY OK source="settings" db=0.4ms queue=0.1ms idle=1012.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:58:02.045 [debug] QUERY OK source="media_profiles" db=0.4ms queue=0.1ms idle=267.6ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 12:58:02.045 [debug] QUERY OK source="settings" db=0.3ms queue=0.1ms idle=11.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:58:02.046 [debug] Fetching recent media IDs from YouTube API for playlist: UUuisDAMnvHMYuLFRedMgmVw 12:58:02.046 [debug] QUERY OK source="settings" db=0.2ms idle=5.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:58:02.046 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 12:58:02.469 [debug] QUERY OK source="media_items" db=3.7ms idle=422.9ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND m0."media_id" IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [18, "mf2Em7F_qDM", "PjvBtlIGGQU", "EF_PO-pALOQ", "j9eh7huEF4A", "y3FGuwfGzL0", "ZWH_eu9wdUE", "UccWWifa8jA", "0L8xWydKOhk", "CkSloYV3ay4", "SkQ7ywGW2HY", "QM3qu001Xdk", "jOTurZWIEmw", "pojDco-WhA4", "GD19Y1VYBKY", "cvViWSBLu-U", "wXm5ocXv9ho", "uB1Tk9eXQbk", "I7vb-PGArW4", "0h9qvAA5dfQ", "7yx-SecBATo", "oj1ySj7TVJk", "dtTdjRB4Q4g", "mpfcVNb8Mhs", "D3MFnCKv2Mc", "458_RTLWN2E", "W26HiyQ5k1s", "w4NDxPYJs1I", "cxuEV05UN7U", "5cPjR5FVDOw", "nJhbZNSrP4c", "X9Eu7mui35E", "wrgZHIpa6F0", "JEN7jfNqy1A", "v31DYiS2LbY", "iJfD5wWLvuM", "qPVTMbiyPLE", "rM_nvsztYlw", "IoD1j3ZG-SQ", "DDnqxbWvIgQ", "HIhF6C1yc7M", "DlNIxjiqQvs", "JO0-kOXXMEw", "2DihqSsed3w", "uDlvlF5iKz8", "v2jg_5WZ41o", "JekH9K8_SS8", "xVV_6qW_Ho8", "qYOABpvD49s", "VAw8zvyLmfE", ...] 12:58:02.474 [debug] QUERY OK source="media_items" db=2.9ms idle=427.1ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [18] 12:58:02.479 [debug] QUERY OK source="tasks" db=0.7ms idle=432.5ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [202907, 18, ~U[2026-01-03 01:58:02Z], ~U[2026-01-03 01:58:02Z]] 12:58:02.481 [info] {"args":{"id":18},"id":202883,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":438751,"event":"job:stop","queue_time":804536,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 12:58:12.466 [info] {"source":"oban","duration":1416,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:58:13.071 [info] {"args":{"id":16},"id":202884,"meta":{},"system_time":1767405493071510200,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 12:58:13.072 [debug] QUERY OK source="sources" db=0.7ms idle=1294.8ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [16] 12:58:13.073 [debug] QUERY OK source="settings" db=0.2ms idle=1010.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:58:13.073 [debug] QUERY OK source="media_profiles" db=0.2ms idle=607.1ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 12:58:13.080 [debug] QUERY OK source="settings" db=6.5ms idle=9.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:58:13.080 [debug] Fetching recent media IDs from YouTube API for playlist: UUPPfK7Nq_yQR84rn1wcTXBg 12:58:13.081 [debug] QUERY OK source="settings" db=0.4ms idle=9.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:58:13.081 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 12:58:13.522 [debug] QUERY OK source="media_items" db=4.3ms idle=445.6ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND m0."media_id" IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [16, "BiTNUZ2zONY", "7pVLE7ggkcc", "YAh-xEteBz4", "6hNpMT5OwGo", "vx3oGZYqxm4", "7W_ZSNuS-4w", "CxUC2HXvO84", "RxapAZRYJ6I", "f2ainZL8Tzk", "KJtASaKc95g", "yBCh5cyI0Po", "dg_HQL3GBcY", "ZiVvXPpo0eE", "YO1TnWptv3o", "HwnBnsQBeOA", "CCE2v3oIa74", "OWVPYr9e76Y", "VApJtIyMEec", "XtOIQYVq26o", "gZL1KzV54Cw", "kmU-Eazta1s", "XXthHXEpEP8", "dPw_HkMgYI0", "rxq-TvgNCBU", "SaCbUtTuLhA", "TWLqSk4ZlN0", "p7_rduK5WA0", "lNZ56C-f4a8", "GlK3f1cs_l4", "Yabwyb14-BQ", "WupRwvJ7sOc", "MhpoNL1gZbw", "yUfm6AbtJ0g", "y8zfgIgZ4c0", "gOwjmKMmkV4", "aTiunvocl5c", "KebjX3KEgWQ", "0T2MYXljL5o", "i7sbS92R4cg", "66CDGzjLBtY", "T_W0FWiJmM8", "u_80rUKItGc", "C9_wibbg1Ug", "A4mg1ZUb-7s", "YmUfZt4Ku9s", "DoWsgrlIjYU", "gc5ojxTuwOg", "3AMdPMoGJus", "htYY8VwN-9g", ...] 12:58:13.527 [debug] QUERY OK source="media_items" db=3.5ms idle=451.1ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [16] 12:58:13.532 [debug] QUERY OK source="tasks" db=0.9ms idle=449.7ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [202908, 16, ~U[2026-01-03 01:58:13Z], ~U[2026-01-03 01:58:13Z]] 12:58:13.533 [info] {"args":{"id":16},"id":202884,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":460658,"event":"job:stop","queue_time":802795,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 12:58:24.040 [info] GET /sources/11/media/56558/force_download 12:58:24.041 [debug] QUERY OK source="settings" db=0.5ms idle=1264.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:58:24.042 [debug] QUERY OK source="settings" db=0.7ms idle=1265.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:58:24.043 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 12:58:24.043 [error] #PID<0.9226.0> running PinchflatWeb.Endpoint (connection #PID<0.9225.0>, stream id 1) terminated Server: pinchflat.uiau7e.uncld.dev:80 (http) Request: GET /sources/11/media/56558/force_download ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/11/media/56558/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.9225.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/11/media/56558/force_download", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 53882}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "from" => "gptbot(at)openai.com", "host" => "pinchflat.uiau7e.uncld.dev", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.3; +https://openai.com/gptbot)", "via" => "2.0 Caddy", "x-forwarded-for" => "74.7.227.183", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https", "x-openai-host-hash" => "454925582" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.uiau7e.uncld.dev", method: "GET", owner: #PID<0.9226.0>, params: %{}, path_info: ["sources", "11", "media", "56558", "force_download"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.uiau7e.uncld.dev", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {10, 210, 0, 2}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"accept-encoding", "gzip, br, deflate"}, {"from", "gptbot(at)openai.com"}, {"host", "pinchflat.uiau7e.uncld.dev"}, {"user-agent", "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.3; +https://openai.com/gptbot)"}, {"via", "2.0 Caddy"}, {"x-forwarded-for", "74.7.227.183"}, {"x-forwarded-host", "pinchflat.uiau7e.uncld.dev"}, {"x-forwarded-proto", "https"}, {"x-openai-host-hash", "454925582"} ], request_path: "/sources/11/media/56558/force_download", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GIcV8Rprflal2UsAAayh"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.9225.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/11/media/56558/force_download", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 53882}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "from" => "gptbot(at)openai.com", "host" => "pinchflat.uiau7e.uncld.dev", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.3; +https://openai.com/gptbot)", "via" => "2.0 Caddy", "x-forwarded-for" => "74.7.227.183", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https", "x-openai-host-hash" => "454925582" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/11/media/56558/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.9225.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/11/media/56558/force_download", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 53882}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "from" => "gptbot(at)openai.com", "host" => "pinchflat.uiau7e.uncld.dev", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.3; +https://openai.com/gptbot)", "via" => "2.0 Caddy", "x-forwarded-for" => "74.7.227.183", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https", "x-openai-host-hash" => "454925582" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.uiau7e.uncld.dev", method: "GET", owner: #PID<0.9226.0>, params: %{}, path_info: ["sources", "11", "media", "56558", "force_download"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.uiau7e.uncld.dev", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {10, 210, 0, 2}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"accept-encoding" (truncated) 12:58:29.287 [info] GET /sources/8 12:58:29.287 [debug] Processing with PinchflatWeb.Sources.SourceController.show/2 Parameters: %{"id" => "8"} Pipelines: [:browser] 12:58:29.289 [debug] QUERY OK source="sources" db=0.3ms idle=1512.1ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [8] 12:58:29.290 [debug] QUERY OK source="media_profiles" db=0.6ms idle=1179.1ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 12:58:29.291 [debug] QUERY OK source="tasks" db=0.4ms idle=514.3ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at" FROM "tasks" AS t0 INNER JOIN "oban_jobs" AS o1 ON o1."id" = t0."job_id" WHERE (t0."source_id" = ?) AND (o1."state" IN (?,?,?,?)) [8, "executing", "available", "scheduled", "retryable"] 12:58:29.292 [debug] QUERY OK source="oban_jobs" db=0.4ms idle=514.9ms SELECT o0."id", o0."state", o0."queue", o0."worker", o0."args", o0."meta", o0."tags", o0."errors", o0."attempt", o0."attempted_by", o0."max_attempts", o0."priority", o0."attempted_at", o0."cancelled_at", o0."completed_at", o0."discarded_at", o0."inserted_at", o0."scheduled_at", o0."id" FROM "oban_jobs" AS o0 WHERE (o0."id" = ?) [202144] 12:58:29.293 [debug] QUERY OK source="settings" db=0.7ms idle=178.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:58:29.294 [debug] QUERY OK source="settings" db=0.5ms idle=4.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:58:29.295 [debug] QUERY OK source="settings" db=0.3ms queue=0.1ms idle=4.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:58:29.297 [debug] QUERY OK source="sources" db=0.5ms idle=5.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [8] 12:58:29.306 [debug] QUERY OK source="media_items" db=8.7ms idle=5.3ms SELECT count(m0."id") FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [8] 12:58:29.316 [debug] QUERY OK source="media_items" db=9.7ms queue=0.1ms idle=13.4ms SELECT m0."id", m0."title", m0."uploaded_at", m0."prevent_download", m0."last_error" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) ORDER BY m0."uploaded_at" DESC LIMIT ? OFFSET ? [8, 10, 0] 12:58:29.318 [debug] QUERY OK source="sources" db=0.7ms idle=23.7ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [8] 12:58:29.319 [debug] QUERY OK source="media_items" db=0.4ms idle=23.9ms SELECT count(m0."id") FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND NOT (m0."media_filepath" IS NULL)) [8] 12:58:29.327 [debug] QUERY OK source="media_items" db=7.0ms idle=22.4ms SELECT m0."id", m0."title", m0."uploaded_at", m0."prevent_download", m0."last_error" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND NOT (m0."media_filepath" IS NULL)) ORDER BY m0."uploaded_at" DESC LIMIT ? OFFSET ? [8, 10, 0] 12:58:29.330 [debug] QUERY OK source="sources" db=0.6ms idle=23.3ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [8] 12:58:29.332 [debug] QUERY OK source="media_items" db=1.2ms idle=14.5ms SELECT count(m0."id") FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds"))))) [8] 12:58:29.336 [debug] QUERY OK source="media_items" db=3.5ms queue=0.1ms idle=14.3ms SELECT m0."id", m0."title", m0."uploaded_at", m0."prevent_download", m0."last_error" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds"))))) ORDER BY m0."uploaded_at" DESC LIMIT ? OFFSET ? [8, 10, 0] 12:58:29.341 [info] Sent 200 in 54ms 12:58:30.804 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=8X2Y62JGDCo --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --embed-subs --sub-langs en --write-thumbnail --convert-thumbnail jpg --output thumbnail:/downloads/Jeff Geerling/Season %(upload_date>%Y)S/s%(upload_date>%Y)Se%(upload_date>%m%d)S99 - %(title)S-thumb.%(ext)S --embed-thumbnail --convert-thumbnail jpg --write-info-json --clean-info-json --embed-metadata --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --sponsorblock-mark sponsor,intro,outro,selfpromo,preview,filler,interaction,music_offtopic --output /downloads/Jeff Geerling/Season %(upload_date>%Y)S/s%(upload_date>%Y)Se%(upload_date>%m%d)S99 - %(title)S.%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/50/e6/50e65329b025b90d8e34586689c33f4545fb63e23081fd13d6995abb127643dc.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: WARNING: The extractor specified to use impersonation for this download, but no impersonate target is available. If you encounter errors, then see https://github.com/yt-dlp/yt-dlp#impersonation for information on installing the required dependencies 12:58:31.042 [debug] Running yt-dlp command for action: download_thumbnail 12:58:31.043 [debug] QUERY OK source="settings" db=0.2ms idle=926.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:58:31.044 [debug] QUERY OK source="settings" db=0.2ms idle=266.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:58:31.044 [debug] QUERY OK source="settings" db=0.4ms idle=267.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:58:31.045 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=8X2Y62JGDCo --no-simulate --skip-download --write-thumbnail --convert-thumbnail jpg --output /config/metadata/media_items/58875/thumbnail.%(ext)s --print-to-file after_move:%()j /tmp/pinchflat/data/5d/56/5d56b4c788dafd78e0129cf0052e5b0e014f05ce71b25207ce2132804805f882.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 12:58:37.571 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=x4_RsUxRjKU --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --embed-subs --sub-langs en --write-thumbnail --convert-thumbnail jpg --output thumbnail:/downloads/Jeff Geerling/Season %(upload_date>%Y)S/s%(upload_date>%Y)Se%(upload_date>%m%d)S99 - %(title)S-thumb.%(ext)S --embed-thumbnail --convert-thumbnail jpg --write-info-json --clean-info-json --embed-metadata --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --sponsorblock-mark sponsor,intro,outro,selfpromo,preview,filler,interaction,music_offtopic --output /downloads/Jeff Geerling/Season %(upload_date>%Y)S/s%(upload_date>%Y)Se%(upload_date>%m%d)S99 - %(title)S.%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/6b/26/6b266b584048300c33e5a058754bea4db671f227740bcde242e0ab18ff14d29e.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: WARNING: The extractor specified to use impersonation for this download, but no impersonate target is available. If you encounter errors, then see https://github.com/yt-dlp/yt-dlp#impersonation for information on installing the required dependencies 12:58:37.804 [debug] Running yt-dlp command for action: download_thumbnail 12:58:37.807 [debug] QUERY OK source="settings" db=0.6ms idle=1029.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:58:37.808 [debug] QUERY OK source="settings" db=0.7ms idle=1029.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:58:37.808 [debug] QUERY OK source="settings" db=0.5ms idle=1030.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:58:37.809 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=x4_RsUxRjKU --no-simulate --skip-download --write-thumbnail --convert-thumbnail jpg --output /config/metadata/media_items/58878/thumbnail.%(ext)s --print-to-file after_move:%()j /tmp/pinchflat/data/fe/b7/feb7a78d7cc01076a63085c7d7c4e9b6d672dbf9ec50ad89572cc42952978234.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 12:58:39.472 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=8X2Y62JGDCo --no-simulate --skip-download --write-thumbnail --convert-thumbnail jpg --output /config/metadata/media_items/58875/thumbnail.%(ext)s --print-to-file after_move:%()j /tmp/pinchflat/data/5d/56/5d56b4c788dafd78e0129cf0052e5b0e014f05ce71b25207ce2132804805f882.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 12:58:39.473 [debug] QUERY OK db=0.3ms idle=1664.7ms begin [] 12:58:39.477 [debug] QUERY OK source="media_items" db=3.7ms UPDATE "media_items" SET "media_downloaded_at" = ?, "media_filepath" = ?, "metadata_filepath" = ?, "nfo_filepath" = ?, "predicted_media_filepath" = ?, "subtitle_filepaths" = ?, "thumbnail_filepath" = ?, "updated_at" = ? WHERE "id" = ? [~U[2026-01-03 01:58:30Z], "/downloads/Jeff Geerling/Season 2025/s2025e122099 - Do you need a whole PC to run a GPU?.mp4", "/downloads/Jeff Geerling/Season 2025/s2025e122099 - Do you need a whole PC to run a GPU?.info.json", "/downloads/Jeff Geerling/Season 2025/s2025e122099 - Do you need a whole PC to run a GPU?.nfo", "/downloads/Jeff Geerling/Season 2025/s2025e122099 - Do you need a whole PC to run a GPU?.mp4", [["en", "/downloads/Jeff Geerling/Season 2025/s2025e122099 - Do you need a whole PC to run a GPU?.en.srt"]], "/downloads/Jeff Geerling/Season 2025/s2025e122099 - Do you need a whole PC to run a GPU?-thumb.jpg", ~U[2026-01-03 01:58:39Z], 58875] 12:58:39.480 [debug] QUERY OK source="media_metadata" db=2.6ms INSERT INTO "media_metadata" ("metadata_filepath","thumbnail_filepath","media_item_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5) RETURNING "id" ["/config/metadata/media_items/58875/metadata.json.gz", "/config/metadata/media_items/58875/thumbnail.jpg", 58875, ~U[2026-01-03 01:58:39Z], ~U[2026-01-03 01:58:39Z]] 12:58:39.482 [debug] QUERY OK db=1.4ms commit [] 12:58:39.501 [debug] QUERY OK source="media_items" db=2.6ms queue=0.1ms idle=1689.5ms UPDATE "media_items" SET "media_size_bytes" = ?, "updated_at" = ? WHERE "id" = ? [225642582, ~U[2026-01-03 01:58:39Z], 58875] 12:58:39.501 [info] User scripts lifecyle file either not present or is empty. Skipping. 12:58:39.503 [info] {"args":{"id":58875},"id":202123,"meta":{},"state":"success","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":115346850,"event":"job:stop","queue_time":20184152783,"attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 12:58:39.513 [info] {"args":{"id":58882},"id":202128,"meta":{},"system_time":1767405519513082010,"max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 12:58:39.514 [debug] QUERY OK source="media_items" db=1.4ms idle=371.1ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [58882] 12:58:39.515 [info] User scripts lifecyle file either not present or is empty. Skipping. 12:58:39.516 [debug] QUERY OK source="sources" db=1.1ms idle=33.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [8] 12:58:39.517 [debug] QUERY OK source="media_profiles" db=0.5ms idle=15.7ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 12:58:39.519 [debug] QUERY OK source="media_items" db=0.8ms idle=14.5ms SELECT 1 FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) LIMIT 1 [58882] 12:58:39.521 [debug] QUERY OK source="media_metadata" db=0.1ms idle=7.7ms SELECT m0."id", m0."metadata_filepath", m0."thumbnail_filepath", m0."media_item_id", m0."inserted_at", m0."updated_at", m0."media_item_id" FROM "media_metadata" AS m0 WHERE (m0."media_item_id" = ?) [58882] 12:58:39.522 [debug] QUERY OK source="media_profiles" db=0.6ms idle=6.3ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 12:58:39.523 [debug] QUERY OK source="settings" db=0.2ms idle=6.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:58:39.523 [debug] QUERY OK source="settings" db=0.2ms queue=0.1ms idle=6.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:58:39.524 [debug] Running yt-dlp command for action: get_downloadable_status 12:58:39.526 [debug] QUERY OK source="settings" db=0.2ms idle=6.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:58:39.527 [debug] QUERY OK source="settings" db=0.3ms queue=0.1ms idle=5.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:58:39.527 [debug] QUERY OK source="settings" db=0.2ms idle=5.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:58:39.528 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=Q6FIcyhjoVo --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/a5/aa/a5aa49b4f87b0a0b965286a5109e4fea55688455ed6883af67349cb3adfd9e5d.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 12:58:42.469 [info] {"source":"oban","duration":2326,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:58:45.600 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=x4_RsUxRjKU --no-simulate --skip-download --write-thumbnail --convert-thumbnail jpg --output /config/metadata/media_items/58878/thumbnail.%(ext)s --print-to-file after_move:%()j /tmp/pinchflat/data/fe/b7/feb7a78d7cc01076a63085c7d7c4e9b6d672dbf9ec50ad89572cc42952978234.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 12:58:45.601 [debug] QUERY OK db=0.1ms idle=1439.4ms begin [] 12:58:45.605 [debug] QUERY OK source="media_items" db=4.0ms UPDATE "media_items" SET "media_downloaded_at" = ?, "media_filepath" = ?, "metadata_filepath" = ?, "nfo_filepath" = ?, "predicted_media_filepath" = ?, "subtitle_filepaths" = ?, "thumbnail_filepath" = ?, "updated_at" = ? WHERE "id" = ? [~U[2026-01-03 01:58:37Z], "/downloads/Jeff Geerling/Season 2025/s2025e121899 - Apple didn't have to go this hard....mp4", "/downloads/Jeff Geerling/Season 2025/s2025e121899 - Apple didn't have to go this hard....info.json", "/downloads/Jeff Geerling/Season 2025/s2025e121899 - Apple didn't have to go this hard....nfo", "/downloads/Jeff Geerling/Season 2025/s2025e121899 - Apple didn't have to go this hard....mp4", [["en", "/downloads/Jeff Geerling/Season 2025/s2025e121899 - Apple didn't have to go this hard....en.srt"]], "/downloads/Jeff Geerling/Season 2025/s2025e121899 - Apple didn't have to go this hard...-thumb.jpg", ~U[2026-01-03 01:58:45Z], 58878] 12:58:45.618 [debug] QUERY OK source="media_metadata" db=11.9ms INSERT INTO "media_metadata" ("metadata_filepath","thumbnail_filepath","media_item_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5) RETURNING "id" ["/config/metadata/media_items/58878/metadata.json.gz", "/config/metadata/media_items/58878/thumbnail.jpg", 58878, ~U[2026-01-03 01:58:45Z], ~U[2026-01-03 01:58:45Z]] 12:58:45.620 [debug] QUERY OK db=2.5ms commit [] 12:58:45.640 [debug] QUERY OK source="media_items" db=4.5ms idle=857.5ms UPDATE "media_items" SET "media_size_bytes" = ?, "updated_at" = ? WHERE "id" = ? [129198252, ~U[2026-01-03 01:58:45Z], 58878] 12:58:45.640 [info] User scripts lifecyle file either not present or is empty. Skipping. 12:58:45.641 [info] {"args":{"id":58878},"id":202125,"meta":{},"state":"success","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":101759165,"event":"job:stop","queue_time":20198879779,"attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 12:58:45.650 [info] {"args":{"id":58973},"id":202130,"meta":{},"system_time":1767405525649919279,"max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 12:58:45.651 [debug] QUERY OK source="media_items" db=1.1ms queue=0.1ms idle=484.5ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [58973] 12:58:45.652 [info] User scripts lifecyle file either not present or is empty. Skipping. 12:58:45.653 [debug] QUERY OK source="sources" db=1.1ms idle=31.5ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [8] 12:58:45.654 [debug] QUERY OK source="media_profiles" db=0.9ms idle=13.5ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 12:58:45.656 [debug] QUERY OK source="media_items" db=1.2ms idle=14.1ms SELECT 1 FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) LIMIT 1 [58973] 12:58:45.658 [debug] QUERY OK source="media_metadata" db=0.2ms idle=8.3ms SELECT m0."id", m0."metadata_filepath", m0."thumbnail_filepath", m0."media_item_id", m0."inserted_at", m0."updated_at", m0."media_item_id" FROM "media_metadata" AS m0 WHERE (m0."media_item_id" = ?) [58973] 12:58:45.659 [debug] QUERY OK source="media_profiles" db=0.2ms queue=0.1ms idle=7.3ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 12:58:45.660 [debug] QUERY OK source="settings" db=0.1ms idle=6.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:58:45.660 [debug] QUERY OK source="settings" db=0.2ms queue=0.1ms idle=6.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:58:45.661 [debug] Running yt-dlp command for action: get_downloadable_status 12:58:45.662 [debug] QUERY OK source="settings" db=0.2ms idle=6.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:58:45.663 [debug] QUERY OK source="settings" db=0.1ms idle=4.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:58:45.663 [debug] QUERY OK source="settings" db=0.2ms idle=4.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:58:45.664 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=OkFfTK8S00c --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/3d/d1/3dd13a7c720f8f7b090cc24aa4fedbce3c03c701f0d77516ba5e0fa27e21413f.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 12:58:46.907 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=Q6FIcyhjoVo --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/a5/aa/a5aa49b4f87b0a0b965286a5109e4fea55688455ed6883af67349cb3adfd9e5d.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: WARNING: [youtube] Q6FIcyhjoVo: Some tv client https formats have been skipped as they are missing a url. YouTube may have enabled the SABR-only or Server-Side Ad Placement experiment for the current session. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details WARNING: [youtube] Q6FIcyhjoVo: Some web client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details 12:58:46.908 [debug] Running yt-dlp command for action: download 12:58:46.909 [debug] QUERY OK source="settings" db=0.5ms queue=0.1ms idle=736.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:58:46.909 [debug] QUERY OK source="settings" db=0.4ms idle=131.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:58:46.910 [debug] QUERY OK source="settings" db=0.3ms idle=131.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:58:46.911 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=Q6FIcyhjoVo --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --embed-subs --sub-langs en --write-thumbnail --convert-thumbnail jpg --output thumbnail:/downloads/Jeff Geerling/Season %(upload_date>%Y)S/s%(upload_date>%Y)Se%(upload_date>%m%d)S99 - %(title)S-thumb.%(ext)S --embed-thumbnail --convert-thumbnail jpg --write-info-json --clean-info-json --embed-metadata --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --sponsorblock-mark sponsor,intro,outro,selfpromo,preview,filler,interaction,music_offtopic --output /downloads/Jeff Geerling/Season %(upload_date>%Y)S/s%(upload_date>%Y)Se%(upload_date>%m%d)S99 - %(title)S.%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/3c/c0/3cc0c16b625a8190e4cba35df2a1d235ea3425c6d03d8d9c0cf7818c8b3731ff.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 12:58:52.938 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=OkFfTK8S00c --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/3d/d1/3dd13a7c720f8f7b090cc24aa4fedbce3c03c701f0d77516ba5e0fa27e21413f.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 12:58:52.938 [debug] Running yt-dlp command for action: download 12:58:52.939 [debug] QUERY OK source="settings" db=0.2ms queue=0.1ms idle=748.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:58:52.940 [debug] QUERY OK source="settings" db=0.2ms queue=0.1ms idle=161.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:58:52.940 [debug] QUERY OK source="settings" db=0.1ms queue=0.1ms idle=162.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:58:52.942 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=OkFfTK8S00c --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --embed-subs --sub-langs en --write-thumbnail --convert-thumbnail jpg --output thumbnail:/downloads/Jeff Geerling/Season %(upload_date>%Y)S/s%(upload_date>%Y)Se%(upload_date>%m%d)S99 - %(title)S-thumb.%(ext)S --embed-thumbnail --convert-thumbnail jpg --write-info-json --clean-info-json --embed-metadata --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --sponsorblock-mark sponsor,intro,outro,selfpromo,preview,filler,interaction,music_offtopic --output /downloads/Jeff Geerling/Season %(upload_date>%Y)S/s%(upload_date>%Y)Se%(upload_date>%m%d)S99 - %(title)S.%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/a1/a8/a1a807644dc4b48428a84944eea7dbaa73edfdf3de3199cd9988a91677847550.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 12:59:00.111 [info] {"source":"oban","duration":1891,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 12:59:01.503 [info] GET /sources/21 12:59:01.503 [debug] Processing with PinchflatWeb.Sources.SourceController.show/2 Parameters: %{"id" => "21"} Pipelines: [:browser] 12:59:01.504 [debug] QUERY OK source="sources" db=0.4ms idle=1392.1ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [21] 12:59:01.505 [debug] QUERY OK source="media_profiles" db=0.4ms queue=0.1ms idle=1285.1ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 12:59:01.507 [debug] QUERY OK source="tasks" db=1.1ms idle=727.4ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at" FROM "tasks" AS t0 INNER JOIN "oban_jobs" AS o1 ON o1."id" = t0."job_id" WHERE (t0."source_id" = ?) AND (o1."state" IN (?,?,?,?)) [21, "executing", "available", "scheduled", "retryable"] 12:59:01.508 [debug] QUERY OK source="oban_jobs" db=0.6ms queue=0.1ms idle=728.7ms SELECT o0."id", o0."state", o0."queue", o0."worker", o0."args", o0."meta", o0."tags", o0."errors", o0."attempt", o0."attempted_by", o0."max_attempts", o0."priority", o0."attempted_at", o0."cancelled_at", o0."completed_at", o0."discarded_at", o0."inserted_at", o0."scheduled_at", o0."id" FROM "oban_jobs" AS o0 WHERE (o0."id" IN (?,?)) [202886, 202184] 12:59:01.509 [debug] QUERY OK source="settings" db=0.4ms idle=286.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:59:01.509 [debug] QUERY OK source="settings" db=0.3ms idle=5.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:59:01.510 [debug] QUERY OK source="settings" db=0.3ms idle=4.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:59:01.513 [debug] QUERY OK source="sources" db=0.7ms idle=5.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [21] 12:59:01.516 [debug] QUERY OK source="media_items" db=3.1ms idle=5.1ms SELECT count(m0."id") FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [21] 12:59:01.520 [debug] QUERY OK source="media_items" db=3.2ms queue=0.1ms idle=7.7ms SELECT m0."id", m0."title", m0."uploaded_at", m0."prevent_download", m0."last_error" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) ORDER BY m0."uploaded_at" DESC LIMIT ? OFFSET ? [21, 10, 0] 12:59:01.521 [debug] QUERY OK source="sources" db=0.6ms idle=11.1ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [21] 12:59:01.523 [debug] QUERY OK source="media_items" db=1.0ms idle=11.3ms SELECT count(m0."id") FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND NOT (m0."media_filepath" IS NULL)) [21] 12:59:01.529 [debug] QUERY OK source="media_items" db=6.3ms idle=10.1ms SELECT m0."id", m0."title", m0."uploaded_at", m0."prevent_download", m0."last_error" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND NOT (m0."media_filepath" IS NULL)) ORDER BY m0."uploaded_at" DESC LIMIT ? OFFSET ? [21, 10, 0] 12:59:01.531 [debug] QUERY OK source="sources" db=0.5ms idle=14.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [21] 12:59:01.535 [debug] QUERY OK source="media_items" db=3.3ms idle=11.3ms SELECT count(m0."id") FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds"))))) [21] 12:59:01.543 [debug] QUERY OK source="media_items" db=8.0ms idle=13.5ms SELECT m0."id", m0."title", m0."uploaded_at", m0."prevent_download", m0."last_error" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds"))))) ORDER BY m0."uploaded_at" DESC LIMIT ? OFFSET ? [21, 10, 0] 12:59:01.545 [info] Sent 200 in 42ms 12:59:12.471 [info] {"source":"oban","duration":1761,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:59:14.345 [info] GET /sources/18 12:59:14.345 [debug] Processing with PinchflatWeb.Sources.SourceController.show/2 Parameters: %{"id" => "18"} Pipelines: [:browser] 12:59:14.346 [debug] QUERY OK source="sources" db=0.4ms idle=1566.9ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [18] 12:59:14.347 [debug] QUERY OK source="media_profiles" db=0.4ms idle=1567.7ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 12:59:14.349 [debug] QUERY OK source="tasks" db=1.6ms queue=0.2ms idle=1086.6ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at" FROM "tasks" AS t0 INNER JOIN "oban_jobs" AS o1 ON o1."id" = t0."job_id" WHERE (t0."source_id" = ?) AND (o1."state" IN (?,?,?,?)) [18, "executing", "available", "scheduled", "retryable"] 12:59:14.350 [debug] QUERY OK source="oban_jobs" db=0.5ms queue=0.1ms idle=571.2ms SELECT o0."id", o0."state", o0."queue", o0."worker", o0."args", o0."meta", o0."tags", o0."errors", o0."attempt", o0."attempted_by", o0."max_attempts", o0."priority", o0."attempted_at", o0."cancelled_at", o0."completed_at", o0."discarded_at", o0."inserted_at", o0."scheduled_at", o0."id" FROM "oban_jobs" AS o0 WHERE (o0."id" IN (?,?)) [202907, 202177] 12:59:14.352 [debug] QUERY OK source="settings" db=0.3ms queue=0.1ms idle=87.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:59:14.352 [debug] QUERY OK source="settings" db=0.3ms idle=5.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:59:14.353 [debug] QUERY OK source="settings" db=0.3ms idle=6.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:59:14.358 [debug] QUERY OK source="sources" db=0.5ms idle=7.5ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [18] 12:59:14.364 [debug] QUERY OK source="media_items" db=5.3ms idle=7.8ms SELECT count(m0."id") FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [18] 12:59:14.371 [debug] QUERY OK source="media_items" db=6.2ms queue=0.2ms idle=12.7ms SELECT m0."id", m0."title", m0."uploaded_at", m0."prevent_download", m0."last_error" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) ORDER BY m0."uploaded_at" DESC LIMIT ? OFFSET ? [18, 10, 0] 12:59:14.372 [debug] QUERY OK source="sources" db=0.5ms idle=19.2ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [18] 12:59:14.373 [debug] QUERY OK source="media_items" db=1.0ms idle=18.7ms SELECT count(m0."id") FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND NOT (m0."media_filepath" IS NULL)) [18] 12:59:14.380 [debug] QUERY OK source="media_items" db=5.9ms idle=15.9ms SELECT m0."id", m0."title", m0."uploaded_at", m0."prevent_download", m0."last_error" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND NOT (m0."media_filepath" IS NULL)) ORDER BY m0."uploaded_at" DESC LIMIT ? OFFSET ? [18, 10, 0] 12:59:14.381 [debug] QUERY OK source="sources" db=0.4ms idle=17.1ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [18] 12:59:14.383 [debug] QUERY OK source="media_items" db=0.9ms idle=10.9ms SELECT count(m0."id") FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds"))))) [18] 12:59:14.386 [debug] QUERY OK source="media_items" db=2.9ms idle=10.9ms SELECT m0."id", m0."title", m0."uploaded_at", m0."prevent_download", m0."last_error" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds"))))) ORDER BY m0."uploaded_at" DESC LIMIT ? OFFSET ? [18, 10, 0] 12:59:14.388 [info] Sent 200 in 43ms 12:59:15.277 [info] {"args":{"id":20},"id":202885,"meta":{},"system_time":1767405555277084219,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 12:59:15.279 [debug] QUERY OK source="sources" db=1.0ms queue=0.1ms idle=895.9ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [20] 12:59:15.280 [debug] QUERY OK source="settings" db=0.6ms queue=0.1ms idle=896.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:59:15.281 [debug] QUERY OK source="media_profiles" db=0.5ms idle=894.2ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 12:59:15.282 [debug] QUERY OK source="settings" db=0.7ms idle=13.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:59:15.282 [debug] Fetching recent media IDs from YouTube API for playlist: UU3HjB3X8jeENm46HCkI0Inw 12:59:15.283 [debug] QUERY OK source="settings" db=0.1ms idle=6.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:59:15.283 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 12:59:15.735 [debug] QUERY OK source="media_items" db=4.3ms idle=451.5ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND m0."media_id" IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [20, "CISwNCR8EXc", "EiIJqc5mV90", "8xJUjtnu72E", "Whh2rDVxvYg", "VybtaBZZqCg", "fuIOAraiRAY", "Ri4qqynMLHk", "xglNhNm95KQ", "5hEq1j_TsEY", "9f5iUsFWqoo", "0SXIhVupLZY", "3gAJpHP3yg4", "8zlnEbQgP74", "EnTFdexbFrM", "P3AU8vUwvAs", "4dQvS_n0uy4", "T5CRSwoP5_w", "cd8IcmBLpXc", "L4nAcT3QYkA", "5gskEcRE1uo", "1xywnh3DqFQ", "fXeqjU4tHqo", "YBMxdPCG_PY", "GB5_4JUB9hc", "EtAUdnvt0kc", "y-5D2HhLbso", "q8kP0pRFRMc", "8mQkTPoWfPo", "U5I92UivGzU", "UoMTKhqTf1U", "oIvzxlDViTo", "kCnh99-yZIs", "orABz0cfQZY", "VKt2PXkavyU", "kYwyB7o7BJs", "UB1FC4Nim1Y", "kN_eMzoJJmA", "4hdpejFLkPc", "ArSlY77uV1w", "2me_AlMFJh8", "OlKsICCPadE", "SjpJZ66rGaU", "iRZp_9irH2g", "CN9qeuO04A4", "BUnuun2sL-8", "XSIfSz3ZEGc", "hW5pHqeC1t4", "_cJV_l9tlaU", "ChT4bsCpwcU", ...] 12:59:15.745 [debug] QUERY OK source="media_items" db=9.1ms idle=456.1ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [20] 12:59:15.748 [debug] QUERY OK source="tasks" db=0.6ms idle=464.6ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [202909, 20, ~U[2026-01-03 01:59:15Z], ~U[2026-01-03 01:59:15Z]] 12:59:15.750 [info] {"args":{"id":20},"id":202885,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":471672,"event":"job:stop","queue_time":742024,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 12:59:15.753 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=Q6FIcyhjoVo --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --embed-subs --sub-langs en --write-thumbnail --convert-thumbnail jpg --output thumbnail:/downloads/Jeff Geerling/Season %(upload_date>%Y)S/s%(upload_date>%Y)Se%(upload_date>%m%d)S99 - %(title)S-thumb.%(ext)S --embed-thumbnail --convert-thumbnail jpg --write-info-json --clean-info-json --embed-metadata --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --sponsorblock-mark sponsor,intro,outro,selfpromo,preview,filler,interaction,music_offtopic --output /downloads/Jeff Geerling/Season %(upload_date>%Y)S/s%(upload_date>%Y)Se%(upload_date>%m%d)S99 - %(title)S.%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/3c/c0/3cc0c16b625a8190e4cba35df2a1d235ea3425c6d03d8d9c0cf7818c8b3731ff.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: WARNING: The extractor specified to use impersonation for this download, but no impersonate target is available. If you encounter errors, then see https://github.com/yt-dlp/yt-dlp#impersonation for information on installing the required dependencies 12:59:15.904 [debug] Running yt-dlp command for action: download_thumbnail 12:59:15.905 [debug] QUERY OK source="settings" db=0.2ms idle=158.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:59:15.907 [debug] QUERY OK source="settings" db=2.0ms idle=158.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:59:15.908 [debug] QUERY OK source="settings" db=0.7ms idle=159.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:59:15.909 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=Q6FIcyhjoVo --no-simulate --skip-download --write-thumbnail --convert-thumbnail jpg --output /config/metadata/media_items/58882/thumbnail.%(ext)s --print-to-file after_move:%()j /tmp/pinchflat/data/ef/01/ef01cde5fa01e53c83eed6d981fa11b8c2047950abdcc860477dd9b5d2b264b8.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 12:59:18.285 [info] {"args":{"id":21},"id":202886,"meta":{},"system_time":1767405558285551588,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 12:59:18.286 [debug] QUERY OK source="sources" db=0.7ms idle=507.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [21] 12:59:18.287 [debug] QUERY OK source="settings" db=0.5ms idle=508.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:59:18.288 [debug] QUERY OK source="media_profiles" db=0.7ms idle=508.8ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 12:59:18.289 [debug] QUERY OK source="settings" db=0.5ms idle=10.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:59:18.289 [debug] Fetching recent media IDs from YouTube API for playlist: UU2-i3KuYoODXsM99Z3-Gm0A 12:59:18.290 [debug] QUERY OK source="settings" db=0.3ms idle=4.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:59:18.290 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 12:59:18.871 [debug] QUERY OK source="media_items" db=5.4ms idle=578.9ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND m0."media_id" IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [21, "J5rMffRWoaE", "SpNjg65s29I", "8YoFYb6ahAc", "2z0gjjea0mQ", "2d3dU0R4Sk4", "_TFHZ9W3Jt8", "dqjpFcJG5Cc", "Pm0PXgXMNVY", "YXwzRiYgHHc", "mUK6UT_7PZo", "nE49QFWymsI", "WY4rfxfFsVA", "LHyVvVpA0xM", "HYIwk4qL2os", "RZBQe4RLdZ8", "DN5ES5PlK6c", "OaO4UInG53A", "UqcJk1mPcnQ", "NqSJZesKtFs", "3bsFFOwsQzA", "EaXJ1rQ2v5k", "jnV5Ptgg1Xc", "rXghFt-g_OM", "Y_MU28GV-M0", "OZ1fXb4gcv0", "t7JeRNvBG40", "XG41sdzNz7I", "rQFtIiVV7RA", "TviKrv1FTzc", "0iH3eN6DUbM", "AjzhbnNiJO0", "3Y2fdnw7AwM", "8Z_XpRjS2oo", "RY1Nnw_qOGc", "pUB0TU9UQhI", "eVR3mgSxjUk", "5hGYObRZMPQ", "4MemHNHi_YE", "yM6u1-_JNXo", "VGLq2Tjokl4", "XpV4r2KB0UA", "cvrpvL1kO_8", "Q4kS9l81A0k", "Mq47ro7Pc00", "GAu1Y-5EPeM", "dNIc1vTlbDc", "S1zqKNfggRQ", "zquTrv6kv-U", "-H6sKLcAL9I", ...] 12:59:18.876 [debug] QUERY OK source="media_items" db=3.1ms idle=585.6ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [21] 12:59:18.884 [debug] QUERY OK source="tasks" db=1.1ms idle=593.0ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [202910, 21, ~U[2026-01-03 01:59:18Z], ~U[2026-01-03 01:59:18Z]] 12:59:18.885 [info] {"args":{"id":21},"id":202886,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":598929,"event":"job:stop","queue_time":731075,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 12:59:23.994 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=Q6FIcyhjoVo --no-simulate --skip-download --write-thumbnail --convert-thumbnail jpg --output /config/metadata/media_items/58882/thumbnail.%(ext)s --print-to-file after_move:%()j /tmp/pinchflat/data/ef/01/ef01cde5fa01e53c83eed6d981fa11b8c2047950abdcc860477dd9b5d2b264b8.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 12:59:23.995 [debug] QUERY OK db=0.0ms idle=1216.0ms begin [] 12:59:23.996 [debug] QUERY OK source="media_items" db=0.8ms UPDATE "media_items" SET "media_downloaded_at" = ?, "media_filepath" = ?, "metadata_filepath" = ?, "nfo_filepath" = ?, "predicted_media_filepath" = ?, "subtitle_filepaths" = ?, "thumbnail_filepath" = ?, "updated_at" = ? WHERE "id" = ? [~U[2026-01-03 01:59:15Z], "/downloads/Jeff Geerling/Season 2025/s2025e121299 - You can only buy this Raspberry Pi in China.mp4", "/downloads/Jeff Geerling/Season 2025/s2025e121299 - You can only buy this Raspberry Pi in China.info.json", "/downloads/Jeff Geerling/Season 2025/s2025e121299 - You can only buy this Raspberry Pi in China.nfo", "/downloads/Jeff Geerling/Season 2025/s2025e121299 - You can only buy this Raspberry Pi in China.mp4", [["en", "/downloads/Jeff Geerling/Season 2025/s2025e121299 - You can only buy this Raspberry Pi in China.en.srt"]], "/downloads/Jeff Geerling/Season 2025/s2025e121299 - You can only buy this Raspberry Pi in China-thumb.jpg", ~U[2026-01-03 01:59:23Z], 58882] 12:59:23.997 [debug] QUERY OK source="media_metadata" db=0.6ms INSERT INTO "media_metadata" ("metadata_filepath","thumbnail_filepath","media_item_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5) RETURNING "id" ["/config/metadata/media_items/58882/metadata.json.gz", "/config/metadata/media_items/58882/thumbnail.jpg", 58882, ~U[2026-01-03 01:59:23Z], ~U[2026-01-03 01:59:23Z]] 12:59:23.998 [debug] QUERY OK db=0.4ms commit [] 12:59:24.032 [debug] QUERY OK source="media_items" db=1.7ms idle=1251.6ms UPDATE "media_items" SET "media_size_bytes" = ?, "updated_at" = ? WHERE "id" = ? [38590141, ~U[2026-01-03 01:59:24Z], 58882] 12:59:24.032 [info] User scripts lifecyle file either not present or is empty. Skipping. 12:59:24.034 [info] {"args":{"id":58882},"id":202128,"meta":{},"state":"success","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":44519789,"event":"job:stop","queue_time":20289509770,"attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 12:59:24.042 [info] {"args":{"id":58975},"id":202132,"meta":{},"system_time":1767405564042333164,"max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 12:59:24.043 [debug] QUERY OK source="media_items" db=0.7ms idle=748.6ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [58975] 12:59:24.044 [info] User scripts lifecyle file either not present or is empty. Skipping. 12:59:24.045 [debug] QUERY OK source="sources" db=0.9ms idle=46.1ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [8] 12:59:24.046 [debug] QUERY OK source="media_profiles" db=0.6ms idle=13.0ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 12:59:24.047 [debug] QUERY OK source="media_items" db=0.7ms idle=12.5ms SELECT 1 FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) LIMIT 1 [58975] 12:59:24.049 [debug] QUERY OK source="media_metadata" db=0.2ms idle=6.9ms SELECT m0."id", m0."metadata_filepath", m0."thumbnail_filepath", m0."media_item_id", m0."inserted_at", m0."updated_at", m0."media_item_id" FROM "media_metadata" AS m0 WHERE (m0."media_item_id" = ?) [58975] 12:59:24.050 [debug] QUERY OK source="media_profiles" db=0.3ms idle=6.2ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 12:59:24.051 [debug] QUERY OK source="settings" db=0.2ms idle=5.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:59:24.051 [debug] QUERY OK source="settings" db=0.4ms idle=5.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:59:24.052 [debug] Running yt-dlp command for action: get_downloadable_status 12:59:24.054 [debug] QUERY OK source="settings" db=0.4ms idle=6.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:59:24.055 [debug] QUERY OK source="settings" db=0.5ms idle=4.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:59:24.055 [debug] QUERY OK source="settings" db=0.4ms idle=5.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:59:24.056 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=9rbz0akyLyQ --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/4a/ca/4aca7d8aca0993fcfbe85747e47515929d29c2c6c749f62b26b3abb8722563d6.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 12:59:24.112 [info] GET /sources/22/media/21298 12:59:24.113 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "21298", "source_id" => "22"} Pipelines: [:browser] 12:59:24.114 [debug] QUERY OK source="media_items" db=0.3ms queue=0.1ms idle=62.4ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [21298] 12:59:24.115 [debug] QUERY OK source="tasks" db=0.5ms queue=0.1ms idle=63.2ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [21298] 12:59:24.115 [debug] QUERY OK source="sources" db=0.4ms idle=60.7ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [22] 12:59:24.116 [debug] QUERY OK source="settings" db=0.3ms idle=60.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:59:24.117 [debug] QUERY OK source="settings" db=0.4ms idle=60.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:59:24.119 [debug] QUERY OK source="settings" db=0.9ms queue=0.1ms idle=4.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:59:24.122 [debug] QUERY OK source="media_profiles" db=0.8ms queue=0.1ms idle=5.8ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 12:59:25.560 [info] Sent 200 in 1448ms 12:59:31.014 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=9rbz0akyLyQ --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/4a/ca/4aca7d8aca0993fcfbe85747e47515929d29c2c6c749f62b26b3abb8722563d6.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 12:59:31.014 [debug] Running yt-dlp command for action: download 12:59:31.015 [debug] QUERY OK source="settings" db=0.5ms idle=1235.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:59:31.016 [debug] QUERY OK source="settings" db=0.4ms idle=1236.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:59:31.016 [debug] QUERY OK source="settings" db=0.5ms idle=1237.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:59:31.017 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=9rbz0akyLyQ --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --embed-subs --sub-langs en --write-thumbnail --convert-thumbnail jpg --output thumbnail:/downloads/Jeff Geerling/Season %(upload_date>%Y)S/s%(upload_date>%Y)Se%(upload_date>%m%d)S99 - %(title)S-thumb.%(ext)S --embed-thumbnail --convert-thumbnail jpg --write-info-json --clean-info-json --embed-metadata --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --sponsorblock-mark sponsor,intro,outro,selfpromo,preview,filler,interaction,music_offtopic --output /downloads/Jeff Geerling/Season %(upload_date>%Y)S/s%(upload_date>%Y)Se%(upload_date>%m%d)S99 - %(title)S.%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/53/d2/53d22f0722d872c29dee9088805316b8067d421f180d6bfd204f8285d2168e34.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 12:59:42.474 [info] {"source":"oban","duration":1564,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:00:00.116 [info] {"source":"oban","duration":3840,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[202911]} 13:00:08.772 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=9rbz0akyLyQ --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --embed-subs --sub-langs en --write-thumbnail --convert-thumbnail jpg --output thumbnail:/downloads/Jeff Geerling/Season %(upload_date>%Y)S/s%(upload_date>%Y)Se%(upload_date>%m%d)S99 - %(title)S-thumb.%(ext)S --embed-thumbnail --convert-thumbnail jpg --write-info-json --clean-info-json --embed-metadata --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --sponsorblock-mark sponsor,intro,outro,selfpromo,preview,filler,interaction,music_offtopic --output /downloads/Jeff Geerling/Season %(upload_date>%Y)S/s%(upload_date>%Y)Se%(upload_date>%m%d)S99 - %(title)S.%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/53/d2/53d22f0722d872c29dee9088805316b8067d421f180d6bfd204f8285d2168e34.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: WARNING: The extractor specified to use impersonation for this download, but no impersonate target is available. If you encounter errors, then see https://github.com/yt-dlp/yt-dlp#impersonation for information on installing the required dependencies 13:00:08.983 [debug] Running yt-dlp command for action: download_thumbnail 13:00:08.984 [debug] QUERY OK source="settings" db=0.3ms idle=1205.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:00:08.985 [debug] QUERY OK source="settings" db=0.2ms idle=1205.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:00:08.985 [debug] QUERY OK source="settings" db=0.2ms idle=1206.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:00:08.986 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=9rbz0akyLyQ --no-simulate --skip-download --write-thumbnail --convert-thumbnail jpg --output /config/metadata/media_items/58975/thumbnail.%(ext)s --print-to-file after_move:%()j /tmp/pinchflat/data/97/54/9754887054173f36c16bd3c115936e77a9614602b0e7e99e4fb920e4cea698e1.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 13:00:12.476 [info] {"source":"oban","duration":1578,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:00:16.393 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=OkFfTK8S00c --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --embed-subs --sub-langs en --write-thumbnail --convert-thumbnail jpg --output thumbnail:/downloads/Jeff Geerling/Season %(upload_date>%Y)S/s%(upload_date>%Y)Se%(upload_date>%m%d)S99 - %(title)S-thumb.%(ext)S --embed-thumbnail --convert-thumbnail jpg --write-info-json --clean-info-json --embed-metadata --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --sponsorblock-mark sponsor,intro,outro,selfpromo,preview,filler,interaction,music_offtopic --output /downloads/Jeff Geerling/Season %(upload_date>%Y)S/s%(upload_date>%Y)Se%(upload_date>%m%d)S99 - %(title)S.%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/a1/a8/a1a807644dc4b48428a84944eea7dbaa73edfdf3de3199cd9988a91677847550.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: WARNING: The extractor specified to use impersonation for this download, but no impersonate target is available. If you encounter errors, then see https://github.com/yt-dlp/yt-dlp#impersonation for information on installing the required dependencies 13:00:16.557 [debug] Running yt-dlp command for action: download_thumbnail 13:00:16.560 [debug] QUERY OK source="settings" db=0.6ms idle=1780.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:00:16.561 [debug] QUERY OK source="settings" db=0.5ms idle=1781.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:00:16.561 [debug] QUERY OK source="settings" db=0.3ms idle=1098.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:00:16.563 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=OkFfTK8S00c --no-simulate --skip-download --write-thumbnail --convert-thumbnail jpg --output /config/metadata/media_items/58973/thumbnail.%(ext)s --print-to-file after_move:%()j /tmp/pinchflat/data/80/2a/802a9289d5c71d4263f7ab0bf7bab61319bf020ccef27b58f63a390228ce210f.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 13:00:16.572 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=9rbz0akyLyQ --no-simulate --skip-download --write-thumbnail --convert-thumbnail jpg --output /config/metadata/media_items/58975/thumbnail.%(ext)s --print-to-file after_move:%()j /tmp/pinchflat/data/97/54/9754887054173f36c16bd3c115936e77a9614602b0e7e99e4fb920e4cea698e1.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 13:00:16.573 [debug] QUERY OK db=0.1ms idle=794.0ms begin [] 13:00:16.576 [debug] QUERY OK source="media_items" db=2.7ms UPDATE "media_items" SET "media_downloaded_at" = ?, "media_filepath" = ?, "metadata_filepath" = ?, "nfo_filepath" = ?, "predicted_media_filepath" = ?, "subtitle_filepaths" = ?, "thumbnail_filepath" = ?, "updated_at" = ? WHERE "id" = ? [~U[2026-01-03 02:00:08Z], "/downloads/Jeff Geerling/Season 2025/s2025e120499 - The RAM Shortage Comes for Us All.mp4", "/downloads/Jeff Geerling/Season 2025/s2025e120499 - The RAM Shortage Comes for Us All.info.json", "/downloads/Jeff Geerling/Season 2025/s2025e120499 - The RAM Shortage Comes for Us All.nfo", "/downloads/Jeff Geerling/Season 2025/s2025e120499 - The RAM Shortage Comes for Us All.mp4", [["en", "/downloads/Jeff Geerling/Season 2025/s2025e120499 - The RAM Shortage Comes for Us All.en.srt"]], "/downloads/Jeff Geerling/Season 2025/s2025e120499 - The RAM Shortage Comes for Us All-thumb.jpg", ~U[2026-01-03 02:00:16Z], 58975] 13:00:16.578 [debug] QUERY OK source="media_metadata" db=1.8ms INSERT INTO "media_metadata" ("metadata_filepath","thumbnail_filepath","media_item_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5) RETURNING "id" ["/config/metadata/media_items/58975/metadata.json.gz", "/config/metadata/media_items/58975/thumbnail.jpg", 58975, ~U[2026-01-03 02:00:16Z], ~U[2026-01-03 02:00:16Z]] 13:00:16.579 [debug] QUERY OK db=1.3ms commit [] 13:00:16.592 [debug] QUERY OK source="media_items" db=8.2ms idle=116.0ms UPDATE "media_items" SET "media_size_bytes" = ?, "updated_at" = ? WHERE "id" = ? [40168968, ~U[2026-01-03 02:00:16Z], 58975] 13:00:16.592 [info] User scripts lifecyle file either not present or is empty. Skipping. 13:00:16.593 [info] {"args":{"id":58975},"id":202132,"meta":{},"state":"success","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":52550387,"event":"job:stop","queue_time":20324039756,"attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 13:00:16.602 [info] {"args":{},"id":202911,"meta":{"cron":true,"cron_expr":"0 2 * * *","cron_tz":"Etc/UTC"},"system_time":1767405616602394765,"max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaQualityUpgradeWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 13:00:16.663 [debug] QUERY OK source="media_items" db=59.8ms queue=0.9ms idle=41.1ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE (((NOT (m0."media_filepath" IS NULL) AND NOT (m0."prevent_download" = 1)) AND NOT (NOT (m0."media_redownloaded_at" IS NULL))) AND IFNULL(redownload_delay_days, 0) > 0 AND DATE('now', '-' || redownload_delay_days || ' day') > DATE(uploaded_at) AND DATE(media_downloaded_at, '-' || redownload_delay_days || ' day') < DATE(uploaded_at) ) [] 13:00:16.664 [info] Redownloading 3 media items 13:00:16.670 [debug] QUERY OK source="tasks" db=0.5ms queue=0.1ms idle=75.9ms INSERT INTO "tasks" ("job_id","media_item_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [202912, 57485, ~U[2026-01-03 02:00:16Z], ~U[2026-01-03 02:00:16Z]] 13:00:16.677 [debug] QUERY OK source="tasks" db=0.6ms queue=0.1ms idle=8.5ms INSERT INTO "tasks" ("job_id","media_item_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [202913, 57527, ~U[2026-01-03 02:00:16Z], ~U[2026-01-03 02:00:16Z]] 13:00:16.681 [debug] QUERY OK source="tasks" db=0.5ms idle=7.8ms INSERT INTO "tasks" ("job_id","media_item_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [202914, 57629, ~U[2026-01-03 02:00:16Z], ~U[2026-01-03 02:00:16Z]] 13:00:16.681 [info] {"args":{},"id":202911,"meta":{"cron":true,"cron_expr":"0 2 * * *","cron_tz":"Etc/UTC"},"state":"success","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaQualityUpgradeWorker","source":"oban","duration":78783,"event":"job:stop","queue_time":16599766,"attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 13:00:16.690 [info] {"args":{"id":58546},"id":201954,"meta":{},"system_time":1767405616689574782,"max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","event":"job:start","attempt":2,"tags":["media_item","media_fetching","show_in_dashboard"]} 13:00:16.691 [debug] QUERY OK source="media_items" db=0.5ms queue=0.1ms idle=11.1ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [58546] 13:00:16.691 [info] User scripts lifecyle file either not present or is empty. Skipping. 13:00:16.693 [debug] QUERY OK source="sources" db=0.9ms queue=0.1ms idle=12.2ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [5] 13:00:16.694 [debug] QUERY OK source="media_profiles" db=1.0ms idle=12.6ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:00:16.695 [debug] QUERY OK source="media_items" db=0.5ms idle=13.3ms SELECT 1 FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) LIMIT 1 [58546] 13:00:16.697 [debug] QUERY OK source="media_metadata" db=0.2ms idle=7.6ms SELECT m0."id", m0."metadata_filepath", m0."thumbnail_filepath", m0."media_item_id", m0."inserted_at", m0."updated_at", m0."media_item_id" FROM "media_metadata" AS m0 WHERE (m0."media_item_id" = ?) [58546] 13:00:16.697 [debug] QUERY OK source="media_profiles" db=0.4ms idle=6.2ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:00:16.698 [debug] QUERY OK source="settings" db=0.2ms idle=5.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:00:16.699 [debug] QUERY OK source="settings" db=0.2ms idle=4.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:00:16.699 [debug] Running yt-dlp command for action: get_downloadable_status 13:00:16.702 [debug] QUERY OK source="settings" db=0.4ms idle=5.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:00:16.702 [debug] QUERY OK source="settings" db=0.3ms idle=5.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:00:16.703 [debug] QUERY OK source="settings" db=0.3ms idle=5.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:00:16.703 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=CcUb7Ky2oSI --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/df/04/df0481d52c66f0d8d6e146d9f61703bb749fad97d4499033beed0fc650550567.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 13:00:23.655 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=CcUb7Ky2oSI --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/df/04/df0481d52c66f0d8d6e146d9f61703bb749fad97d4499033beed0fc650550567.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 13:00:23.655 [debug] Running yt-dlp command for action: download 13:00:23.656 [debug] QUERY OK source="settings" db=0.4ms idle=1876.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:00:23.656 [debug] QUERY OK source="settings" db=0.1ms idle=1877.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:00:23.657 [debug] QUERY OK source="settings" db=0.2ms idle=1877.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:00:23.658 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=CcUb7Ky2oSI --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --embed-subs --sub-langs en --write-thumbnail --convert-thumbnail jpg --output thumbnail:/downloads/CodeSync/Season %(upload_date>%Y)S/s%(upload_date>%Y)Se%(upload_date>%m%d)S99 - %(title)S-thumb.%(ext)S --embed-thumbnail --convert-thumbnail jpg --write-info-json --clean-info-json --embed-metadata --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --sponsorblock-mark sponsor,intro,outro,selfpromo,preview,filler,interaction,music_offtopic --output /downloads/CodeSync/Season %(upload_date>%Y)S/s%(upload_date>%Y)Se%(upload_date>%m%d)S99 - %(title)S.%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/57/1d/571d0aab7d13a857d1d2f906edf3269071af6f53830ca3bf5fef1ccbb9df2efd.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 13:00:24.346 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=OkFfTK8S00c --no-simulate --skip-download --write-thumbnail --convert-thumbnail jpg --output /config/metadata/media_items/58973/thumbnail.%(ext)s --print-to-file after_move:%()j /tmp/pinchflat/data/80/2a/802a9289d5c71d4263f7ab0bf7bab61319bf020ccef27b58f63a390228ce210f.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 13:00:24.347 [debug] QUERY OK db=0.0ms idle=850.2ms begin [] 13:00:24.348 [debug] QUERY OK source="media_items" db=0.9ms UPDATE "media_items" SET "media_downloaded_at" = ?, "media_filepath" = ?, "metadata_filepath" = ?, "nfo_filepath" = ?, "predicted_media_filepath" = ?, "subtitle_filepaths" = ?, "thumbnail_filepath" = ?, "updated_at" = ? WHERE "id" = ? [~U[2026-01-03 02:00:16Z], "/downloads/Jeff Geerling/Season 2025/s2025e120899 - This is not a Framework Laptop.mp4", "/downloads/Jeff Geerling/Season 2025/s2025e120899 - This is not a Framework Laptop.info.json", "/downloads/Jeff Geerling/Season 2025/s2025e120899 - This is not a Framework Laptop.nfo", "/downloads/Jeff Geerling/Season 2025/s2025e120899 - This is not a Framework Laptop.mp4", [["en", "/downloads/Jeff Geerling/Season 2025/s2025e120899 - This is not a Framework Laptop.en.srt"]], "/downloads/Jeff Geerling/Season 2025/s2025e120899 - This is not a Framework Laptop-thumb.jpg", ~U[2026-01-03 02:00:24Z], 58973] 13:00:24.349 [debug] QUERY OK source="media_metadata" db=0.8ms INSERT INTO "media_metadata" ("metadata_filepath","thumbnail_filepath","media_item_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5) RETURNING "id" ["/config/metadata/media_items/58973/metadata.json.gz", "/config/metadata/media_items/58973/thumbnail.jpg", 58973, ~U[2026-01-03 02:00:24Z], ~U[2026-01-03 02:00:24Z]] 13:00:24.350 [debug] QUERY OK db=0.5ms commit [] 13:00:24.370 [debug] QUERY OK source="media_items" db=1.6ms queue=0.1ms idle=712.2ms UPDATE "media_items" SET "media_size_bytes" = ?, "updated_at" = ? WHERE "id" = ? [144160434, ~U[2026-01-03 02:00:24Z], 58973] 13:00:24.370 [info] User scripts lifecyle file either not present or is empty. Skipping. 13:00:24.372 [info] {"args":{"id":58973},"id":202130,"meta":{},"state":"success","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":98721130,"event":"job:stop","queue_time":20290646913,"attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 13:00:24.379 [info] {"args":{"id":57485,"quality_upgrade?":true},"id":202912,"meta":{},"system_time":1767405624379476433,"max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 13:00:24.380 [debug] QUERY OK source="media_items" db=0.3ms queue=0.1ms idle=601.1ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [57485] 13:00:24.381 [info] User scripts lifecyle file either not present or is empty. Skipping. 13:00:24.382 [debug] QUERY OK source="sources" db=0.8ms idle=30.7ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [26] 13:00:24.386 [debug] QUERY OK source="media_metadata" db=1.2ms queue=0.1ms idle=14.2ms SELECT m0."id", m0."metadata_filepath", m0."thumbnail_filepath", m0."media_item_id", m0."inserted_at", m0."updated_at", m0."media_item_id" FROM "media_metadata" AS m0 WHERE (m0."media_item_id" = ?) [57485] 13:00:24.387 [debug] QUERY OK source="media_profiles" db=0.8ms queue=0.1ms idle=14.6ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:00:24.388 [debug] QUERY OK source="settings" db=0.3ms idle=8.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:00:24.389 [debug] QUERY OK source="settings" db=0.3ms idle=7.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:00:24.389 [debug] Running yt-dlp command for action: get_downloadable_status 13:00:24.391 [debug] QUERY OK source="settings" db=0.4ms idle=8.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:00:24.392 [debug] QUERY OK source="settings" db=0.3ms idle=5.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:00:24.392 [debug] QUERY OK source="settings" db=0.3ms idle=4.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:00:24.392 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=CYW3qAtbiSg --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/d2/c3/d2c38cd7155cfdbf5ef6bacac2421278556f046d5c25fa96e959eb49e7647757.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 13:00:27.285 [info] GET /sources/21/media/59038 13:00:27.285 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "59038", "source_id" => "21"} Pipelines: [:browser] 13:00:27.286 [debug] QUERY OK source="media_items" db=0.6ms idle=1506.2ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [59038] 13:00:27.287 [debug] QUERY OK source="tasks" db=0.5ms idle=1507.2ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [59038] 13:00:27.287 [debug] QUERY OK source="sources" db=0.7ms idle=1507.2ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [21] 13:00:27.288 [debug] QUERY OK source="oban_jobs" db=0.4ms idle=1508.3ms SELECT o0."id", o0."state", o0."queue", o0."worker", o0."args", o0."meta", o0."tags", o0."errors", o0."attempt", o0."attempted_by", o0."max_attempts", o0."priority", o0."attempted_at", o0."cancelled_at", o0."completed_at", o0."discarded_at", o0."inserted_at", o0."scheduled_at", o0."id" FROM "oban_jobs" AS o0 WHERE (o0."id" = ?) [202143] 13:00:27.288 [debug] QUERY OK source="settings" db=0.4ms idle=779.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:00:27.290 [debug] QUERY OK source="settings" db=1.5ms idle=2.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:00:27.291 [debug] QUERY OK source="settings" db=0.3ms idle=3.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:00:27.292 [debug] QUERY OK source="media_profiles" db=0.3ms idle=4.5ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:00:27.310 [info] Sent 200 in 25ms 13:00:28.892 [info] GET /sources/11/media/58554 13:00:28.892 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "58554", "source_id" => "11"} Pipelines: [:browser] 13:00:28.894 [debug] QUERY OK source="media_items" db=0.7ms idle=373.8ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [58554] 13:00:28.895 [debug] QUERY OK source="tasks" db=1.0ms idle=115.7ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [58554] 13:00:28.896 [debug] QUERY OK source="sources" db=1.2ms idle=115.7ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [11] 13:00:28.897 [debug] QUERY OK source="settings" db=0.7ms idle=117.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:00:28.897 [debug] QUERY OK source="settings" db=0.3ms idle=118.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:00:28.898 [debug] QUERY OK source="settings" db=0.2ms idle=4.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:00:28.900 [debug] QUERY OK source="media_profiles" db=0.4ms idle=4.1ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:00:28.902 [info] Sent 200 in 9ms 13:00:31.206 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=CYW3qAtbiSg --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/d2/c3/d2c38cd7155cfdbf5ef6bacac2421278556f046d5c25fa96e959eb49e7647757.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: WARNING: [youtube] CYW3qAtbiSg: Some tv client https formats have been skipped as they are missing a url. YouTube may have enabled the SABR-only or Server-Side Ad Placement experiment for the current session. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details WARNING: [youtube] CYW3qAtbiSg: Some web client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details 13:00:31.207 [debug] Running yt-dlp command for action: download 13:00:31.208 [debug] QUERY OK source="settings" db=0.4ms idle=684.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:00:31.209 [debug] QUERY OK source="settings" db=0.3ms idle=429.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:00:31.209 [debug] QUERY OK source="settings" db=0.2ms idle=430.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:00:31.210 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=CYW3qAtbiSg --no-simulate --no-progress --force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --embed-subs --sub-langs en --write-thumbnail --convert-thumbnail jpg --output thumbnail:/downloads/Monument/Season %(upload_date>%Y)S/s%(upload_date>%Y)Se%(upload_date>%m%d)S99 - %(title)S-thumb.%(ext)S --embed-thumbnail --convert-thumbnail jpg --write-info-json --clean-info-json --embed-metadata --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --sponsorblock-mark sponsor,intro,outro,selfpromo,preview,filler,interaction,music_offtopic --output /downloads/Monument/Season %(upload_date>%Y)S/s%(upload_date>%Y)Se%(upload_date>%m%d)S99 - %(title)S.%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/a7/af/a7af8ac50d73877d53447db6024248bb5020ab523904b2330ef07e71201bf529.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 13:00:32.355 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=CcUb7Ky2oSI --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --embed-subs --sub-langs en --write-thumbnail --convert-thumbnail jpg --output thumbnail:/downloads/CodeSync/Season %(upload_date>%Y)S/s%(upload_date>%Y)Se%(upload_date>%m%d)S99 - %(title)S-thumb.%(ext)S --embed-thumbnail --convert-thumbnail jpg --write-info-json --clean-info-json --embed-metadata --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --sponsorblock-mark sponsor,intro,outro,selfpromo,preview,filler,interaction,music_offtopic --output /downloads/CodeSync/Season %(upload_date>%Y)S/s%(upload_date>%Y)Se%(upload_date>%m%d)S99 - %(title)S.%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/57/1d/571d0aab7d13a857d1d2f906edf3269071af6f53830ca3bf5fef1ccbb9df2efd.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 1 with: WARNING: The extractor specified to use impersonation for this download, but no impersonate target is available. If you encounter errors, then see https://github.com/yt-dlp/yt-dlp#impersonation for information on installing the required dependencies ERROR: Unable to download video subtitles for 'en': HTTP Error 429: Too Many Requests 13:00:32.355 [error] yt-dlp download error for media item #58546: "WARNING: The extractor specified to use impersonation for this download, but no impersonate target is available. If you encounter errors, then see https://github.com/yt-dlp/yt-dlp#impersonation for information on installing the required dependencies\nERROR: Unable to download video subtitles for 'en': HTTP Error 429: Too Many Requests\n" 13:00:32.357 [info] {"error":"** (Oban.PerformError) Pinchflat.Downloading.MediaDownloadWorker failed with {:error, :download_failed}","args":{"id":58546},"id":201954,"meta":{},"state":"failure","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":15666547,"event":"job:exception","queue_time":7863163471,"attempt":2,"tags":["media_item","media_fetching","show_in_dashboard"]} 13:00:32.364 [info] {"args":{"id":57527,"quality_upgrade?":true},"id":202913,"meta":{},"system_time":1767405632364537716,"max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 13:00:32.366 [debug] QUERY OK source="media_items" db=0.7ms queue=0.1ms idle=1156.0ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [57527] 13:00:32.366 [info] User scripts lifecyle file either not present or is empty. Skipping. 13:00:32.367 [debug] QUERY OK source="sources" db=0.5ms idle=1157.2ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [9] 13:00:32.369 [debug] QUERY OK source="media_metadata" db=0.4ms idle=843.6ms SELECT m0."id", m0."metadata_filepath", m0."thumbnail_filepath", m0."media_item_id", m0."inserted_at", m0."updated_at", m0."media_item_id" FROM "media_metadata" AS m0 WHERE (m0."media_item_id" = ?) [57527] 13:00:32.370 [debug] QUERY OK source="media_profiles" db=0.3ms idle=12.9ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:00:32.371 [debug] QUERY OK source="settings" db=0.2ms idle=6.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:00:32.372 [debug] QUERY OK source="settings" db=0.2ms queue=0.1ms idle=5.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:00:32.372 [debug] Running yt-dlp command for action: get_downloadable_status 13:00:32.374 [debug] QUERY OK source="settings" db=0.2ms idle=6.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:00:32.374 [debug] QUERY OK source="settings" db=0.1ms idle=4.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:00:32.375 [debug] QUERY OK source="settings" db=0.2ms idle=4.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:00:32.375 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=B2l4YfAav6M --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/10/9e/109e57555526b682fc91d29a0fba6065c1547c77a50bf9b9b4f95f929db317d8.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 13:00:40.213 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=B2l4YfAav6M --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/10/9e/109e57555526b682fc91d29a0fba6065c1547c77a50bf9b9b4f95f929db317d8.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: WARNING: [youtube] B2l4YfAav6M: Some tv client https formats have been skipped as they are missing a url. YouTube may have enabled the SABR-only or Server-Side Ad Placement experiment for the current session. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details WARNING: [youtube] B2l4YfAav6M: Some web client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details 13:00:40.213 [debug] Running yt-dlp command for action: download 13:00:40.214 [debug] QUERY OK source="settings" db=0.2ms idle=656.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:00:40.214 [debug] QUERY OK source="settings" db=0.1ms idle=434.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:00:40.214 [debug] QUERY OK source="settings" db=0.2ms idle=435.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:00:40.215 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=B2l4YfAav6M --no-simulate --no-progress --force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --embed-subs --sub-langs en --write-thumbnail --convert-thumbnail jpg --output thumbnail:/downloads/Julie Nolke/Season %(upload_date>%Y)S/s%(upload_date>%Y)Se%(upload_date>%m%d)S99 - %(title)S-thumb.%(ext)S --embed-thumbnail --convert-thumbnail jpg --write-info-json --clean-info-json --embed-metadata --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --sponsorblock-mark sponsor,intro,outro,selfpromo,preview,filler,interaction,music_offtopic --output /downloads/Julie Nolke/Season %(upload_date>%Y)S/s%(upload_date>%Y)Se%(upload_date>%m%d)S99 - %(title)S.%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/18/49/18499e71b3b3244aa853ae9aeb6211fefd562aaecb887d4869287abe319c270e.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 13:00:41.385 [info] GET /sources/21/media/59074 13:00:41.385 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "59074", "source_id" => "21"} Pipelines: [:browser] 13:00:41.386 [debug] QUERY OK source="media_items" db=0.6ms idle=1606.5ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [59074] 13:00:41.388 [debug] QUERY OK source="tasks" db=0.5ms queue=0.1ms idle=1173.2ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [59074] 13:00:41.388 [debug] QUERY OK source="sources" db=0.8ms queue=0.1ms idle=1172.9ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [21] 13:00:41.389 [debug] QUERY OK source="oban_jobs" db=0.4ms idle=1174.2ms SELECT o0."id", o0."state", o0."queue", o0."worker", o0."args", o0."meta", o0."tags", o0."errors", o0."attempt", o0."attempted_by", o0."max_attempts", o0."priority", o0."attempted_at", o0."cancelled_at", o0."completed_at", o0."discarded_at", o0."inserted_at", o0."scheduled_at", o0."id" FROM "oban_jobs" AS o0 WHERE (o0."id" = ?) [202146] 13:00:41.390 [debug] QUERY OK source="settings" db=0.3ms queue=0.1ms idle=829.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:00:41.391 [debug] QUERY OK source="settings" db=0.5ms queue=0.1ms idle=4.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:00:41.393 [debug] QUERY OK source="settings" db=0.5ms queue=0.1ms idle=4.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:00:41.395 [debug] QUERY OK source="media_profiles" db=0.4ms idle=6.3ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:00:41.416 [info] Sent 200 in 31ms 13:00:42.480 [info] {"source":"oban","duration":3226,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:00:56.978 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=B2l4YfAav6M --no-simulate --no-progress --force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --embed-subs --sub-langs en --write-thumbnail --convert-thumbnail jpg --output thumbnail:/downloads/Julie Nolke/Season %(upload_date>%Y)S/s%(upload_date>%Y)Se%(upload_date>%m%d)S99 - %(title)S-thumb.%(ext)S --embed-thumbnail --convert-thumbnail jpg --write-info-json --clean-info-json --embed-metadata --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --sponsorblock-mark sponsor,intro,outro,selfpromo,preview,filler,interaction,music_offtopic --output /downloads/Julie Nolke/Season %(upload_date>%Y)S/s%(upload_date>%Y)Se%(upload_date>%m%d)S99 - %(title)S.%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/18/49/18499e71b3b3244aa853ae9aeb6211fefd562aaecb887d4869287abe319c270e.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: WARNING: The extractor specified to use impersonation for this download, but no impersonate target is available. If you encounter errors, then see https://github.com/yt-dlp/yt-dlp#impersonation for information on installing the required dependencies WARNING: Replacing existing file "/downloads/Julie Nolke/Season 2025/s2025e112799 - The Sneeze-thumb.jpg" 13:00:57.052 [debug] Running yt-dlp command for action: download_thumbnail 13:00:57.053 [debug] QUERY OK source="settings" db=0.2ms idle=1274.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:00:57.054 [debug] QUERY OK source="settings" db=0.2ms idle=438.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:00:57.055 [debug] QUERY OK source="settings" db=0.7ms idle=275.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:00:57.055 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=B2l4YfAav6M --no-simulate --skip-download --write-thumbnail --convert-thumbnail jpg --output /config/metadata/media_items/57527/thumbnail.%(ext)s --print-to-file after_move:%()j /tmp/pinchflat/data/0d/ef/0defe6e5258eb40c505c7af4b4e76a56cce449bd902ac81db14d1863621e516d.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 13:01:00.118 [info] {"source":"oban","duration":427,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 13:01:04.846 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=B2l4YfAav6M --no-simulate --skip-download --write-thumbnail --convert-thumbnail jpg --output /config/metadata/media_items/57527/thumbnail.%(ext)s --print-to-file after_move:%()j /tmp/pinchflat/data/0d/ef/0defe6e5258eb40c505c7af4b4e76a56cce449bd902ac81db14d1863621e516d.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 13:01:04.849 [debug] QUERY OK source="media_items" db=2.4ms idle=1068.4ms UPDATE "media_items" SET "media_downloaded_at" = ?, "predicted_media_filepath" = ?, "updated_at" = ? WHERE "id" = ? [~U[2026-01-03 02:00:57Z], "/downloads/Julie Nolke/Season 2025/s2025e112799 - The Sneeze.mp4", ~U[2026-01-03 02:01:04Z], 57527] 13:01:04.867 [debug] QUERY OK source="media_items" db=1.7ms idle=225.7ms UPDATE "media_items" SET "media_redownloaded_at" = ?, "media_size_bytes" = ?, "updated_at" = ? WHERE "id" = ? [~U[2026-01-03 02:01:04Z], 11453183, ~U[2026-01-03 02:01:04Z], 57527] 13:01:04.867 [info] User scripts lifecyle file either not present or is empty. Skipping. 13:01:04.869 [info] {"args":{"id":57527,"quality_upgrade?":true},"id":202913,"meta":{},"state":"success","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":32503471,"event":"job:stop","queue_time":16362834,"attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 13:01:04.879 [info] {"args":{"id":57629,"quality_upgrade?":true},"id":202914,"meta":{},"system_time":1767405664879084754,"max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 13:01:04.880 [debug] QUERY OK source="media_items" db=0.7ms queue=0.1ms idle=100.6ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [57629] 13:01:04.881 [info] User scripts lifecyle file either not present or is empty. Skipping. 13:01:04.882 [debug] QUERY OK source="sources" db=0.5ms queue=0.1ms idle=31.7ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [3] 13:01:04.885 [debug] QUERY OK source="media_metadata" db=0.4ms idle=16.9ms SELECT m0."id", m0."metadata_filepath", m0."thumbnail_filepath", m0."media_item_id", m0."inserted_at", m0."updated_at", m0."media_item_id" FROM "media_metadata" AS m0 WHERE (m0."media_item_id" = ?) [57629] 13:01:04.886 [debug] QUERY OK source="media_profiles" db=0.7ms queue=0.1ms idle=15.9ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:01:04.887 [debug] QUERY OK source="settings" db=0.4ms idle=8.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:01:04.888 [debug] QUERY OK source="settings" db=0.3ms queue=0.1ms idle=7.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:01:04.889 [debug] Running yt-dlp command for action: get_downloadable_status 13:01:04.890 [debug] QUERY OK source="settings" db=0.3ms idle=8.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:01:04.891 [debug] QUERY OK source="settings" db=0.2ms idle=5.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:01:04.891 [debug] QUERY OK source="settings" db=0.3ms queue=0.1ms idle=5.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:01:04.892 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=2Q9DzW20YJ8 --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/1e/fe/1efe9a72577c20805e3e5a9cb19af4bd79da791744a6c827b0d1ee1622d4531c.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 13:01:12.483 [info] {"source":"oban","duration":3104,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:01:12.515 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=2Q9DzW20YJ8 --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/1e/fe/1efe9a72577c20805e3e5a9cb19af4bd79da791744a6c827b0d1ee1622d4531c.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 13:01:12.516 [debug] Running yt-dlp command for action: download 13:01:12.517 [debug] QUERY OK source="settings" db=0.4ms queue=0.2ms idle=1737.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:01:12.517 [debug] QUERY OK source="settings" db=0.2ms idle=1738.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:01:12.518 [debug] QUERY OK source="settings" db=0.3ms idle=1738.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:01:12.519 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=2Q9DzW20YJ8 --no-simulate --no-progress --force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --embed-subs --sub-langs en --write-thumbnail --convert-thumbnail jpg --output thumbnail:/downloads/Blondie in China/Season %(upload_date>%Y)S/s%(upload_date>%Y)Se%(upload_date>%m%d)S99 - %(title)S-thumb.%(ext)S --embed-thumbnail --convert-thumbnail jpg --write-info-json --clean-info-json --embed-metadata --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --sponsorblock-mark sponsor,intro,outro,selfpromo,preview,filler,interaction,music_offtopic --output /downloads/Blondie in China/Season %(upload_date>%Y)S/s%(upload_date>%Y)Se%(upload_date>%m%d)S99 - %(title)S.%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/00/3c/003c8ee5a3e39d6c6c7dc32fbd937ba0f34fa202ce0ae86213e1ba75fd5d08ab.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 13:01:25.646 [info] GET /sources/22/media/21290 13:01:25.646 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "21290", "source_id" => "22"} Pipelines: [:browser] 13:01:25.649 [debug] QUERY OK source="media_items" db=0.4ms queue=0.2ms idle=1870.0ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [21290] 13:01:25.651 [debug] QUERY OK source="tasks" db=0.4ms queue=0.1ms idle=1871.4ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [21290] 13:01:25.651 [debug] QUERY OK source="sources" db=0.9ms idle=1871.7ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [22] 13:01:25.653 [debug] QUERY OK source="settings" db=0.8ms idle=1873.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:01:25.654 [debug] QUERY OK source="settings" db=0.3ms queue=0.1ms idle=935.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:01:25.655 [debug] QUERY OK source="settings" db=0.3ms queue=0.1ms idle=5.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:01:25.657 [debug] QUERY OK source="media_profiles" db=0.2ms idle=6.2ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:01:25.695 [info] Sent 200 in 48ms 13:01:35.959 [info] GET /sources/21/media/58999 13:01:35.959 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "58999", "source_id" => "21"} Pipelines: [:browser] 13:01:35.960 [debug] QUERY OK source="media_items" db=0.5ms queue=0.1ms idle=1181.0ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [58999] 13:01:35.961 [debug] QUERY OK source="tasks" db=0.3ms idle=1182.1ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [58999] 13:01:35.962 [debug] QUERY OK source="sources" db=0.6ms idle=1182.3ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [21] 13:01:35.962 [debug] QUERY OK source="oban_jobs" db=0.2ms idle=1183.4ms SELECT o0."id", o0."state", o0."queue", o0."worker", o0."args", o0."meta", o0."tags", o0."errors", o0."attempt", o0."attempted_by", o0."max_attempts", o0."priority", o0."attempted_at", o0."cancelled_at", o0."completed_at", o0."discarded_at", o0."inserted_at", o0."scheduled_at", o0."id" FROM "oban_jobs" AS o0 WHERE (o0."id" = ?) [202139] 13:01:35.963 [debug] QUERY OK source="settings" db=0.1ms idle=207.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:01:35.963 [debug] QUERY OK source="settings" db=0.1ms idle=3.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:01:35.964 [debug] QUERY OK source="settings" db=0.1ms idle=2.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:01:35.965 [debug] QUERY OK source="media_profiles" db=0.2ms queue=0.1ms idle=3.5ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:01:35.987 [info] Sent 200 in 28ms 13:01:42.489 [info] {"source":"oban","duration":4272,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:02:00.119 [info] {"source":"oban","duration":364,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 13:02:08.073 [info] GET /sources/8/media/58975 13:02:08.073 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "58975", "source_id" => "8"} Pipelines: [:browser] 13:02:08.074 [debug] QUERY OK source="media_items" db=0.4ms queue=0.1ms idle=295.2ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [58975] 13:02:08.075 [debug] QUERY OK source="tasks" db=0.3ms idle=296.3ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [58975] 13:02:08.076 [debug] QUERY OK source="sources" db=0.5ms idle=296.5ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [8] 13:02:08.076 [debug] QUERY OK source="oban_jobs" db=0.2ms idle=297.4ms SELECT o0."id", o0."state", o0."queue", o0."worker", o0."args", o0."meta", o0."tags", o0."errors", o0."attempt", o0."attempted_by", o0."max_attempts", o0."priority", o0."attempted_at", o0."cancelled_at", o0."completed_at", o0."discarded_at", o0."inserted_at", o0."scheduled_at", o0."id" FROM "oban_jobs" AS o0 WHERE (o0."id" = ?) [202132] 13:02:08.077 [debug] QUERY OK source="settings" db=0.2ms idle=235.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:02:08.077 [debug] QUERY OK source="settings" db=0.1ms idle=2.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:02:08.078 [debug] QUERY OK source="settings" db=0.3ms idle=2.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:02:08.080 [debug] QUERY OK source="media_profiles" db=0.5ms idle=3.4ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:02:08.118 [info] Sent 200 in 44ms 13:02:11.865 [info] {"args":{"id":19},"id":202887,"meta":{},"system_time":1767405731865237418,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 13:02:11.866 [debug] QUERY OK source="sources" db=0.6ms queue=0.1ms idle=86.8ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [19] 13:02:11.867 [debug] QUERY OK source="settings" db=0.5ms queue=0.1ms idle=88.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:02:11.869 [debug] QUERY OK source="media_profiles" db=0.7ms idle=89.0ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:02:11.870 [debug] QUERY OK source="settings" db=0.5ms queue=0.1ms idle=11.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:02:11.870 [debug] Fetching recent media IDs from YouTube API for playlist: UUaYhH3F6iB3KyW3afTHk5XA 13:02:11.871 [debug] QUERY OK source="settings" db=0.3ms queue=0.1ms idle=5.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:02:11.871 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 13:02:12.410 [debug] QUERY OK source="media_items" db=4.0ms idle=539.0ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND m0."media_id" IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [19, "mUlKcxGWvrQ", "ydfuNK4wSik", "x6cNQykYdEM", "SvyVS7zvquc", "l4O2F-1BWVI", "LYXADYUSTSg", "HpL40FdPGqk", "Wre5VWHxSug", "PdUu77SAH0I", "VCflrtok9hQ", "haEa6h8Ptf0", "c_-f7G9VSPw", "7rSLcNznix4", "OLXr-B-xwY8", "X05FPJq6_Oc", "kuL-trgOvq8", "WpBEifN8BYw", "YETks_YtraY", "bwKKd4N8Q2E", "PpNfOqbt0a8", "GyifuiQ6p48", "SkoFBCBASto", "-GNid2M6IC8", "muehDmLuJSw", "nBx5yssxPDk", "Q6vzDo6it9o", "AH9Z6_PlKhA", "dZfthyLyjDk", "j9UuSMaqX9Q", "jmoVFLUvyD0", "tKm_pnNEDsc", "boVAiizeh1M", "FNtBH6k7Jmo", "MDhN5WGOJ_o", "P-UQX5L_Ff0", "kys3lRzOOEY", "VDHSC2Dl8f0", "JU0uEdyPKlE", "0sSWAzq7rjc", "HOLXNrjWeuo"] 13:02:12.415 [debug] QUERY OK source="media_items" db=1.9ms idle=545.2ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [19] 13:02:12.420 [debug] QUERY OK source="tasks" db=0.9ms idle=547.9ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [202915, 19, ~U[2026-01-03 02:02:12Z], ~U[2026-01-03 02:02:12Z]] 13:02:12.421 [info] {"args":{"id":19},"id":202887,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":555071,"event":"job:stop","queue_time":411345,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 13:02:12.493 [info] {"source":"oban","duration":3385,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:02:12.872 [info] {"args":{"id":23},"id":202888,"meta":{},"system_time":1767405732872514902,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 13:02:12.876 [debug] QUERY OK source="sources" db=2.8ms queue=0.1ms idle=452.1ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [23] 13:02:12.878 [debug] QUERY OK source="settings" db=0.8ms queue=0.6ms idle=447.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:02:12.879 [debug] QUERY OK source="media_profiles" db=0.5ms idle=385.7ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:02:12.881 [debug] QUERY OK source="settings" db=0.4ms queue=0.5ms idle=15.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:02:12.881 [debug] Fetching recent media IDs from YouTube API for playlist: UUSHvlfXUGYGWmDBg-afA5Bg 13:02:12.882 [debug] QUERY OK source="settings" db=0.9ms queue=0.1ms idle=9.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:02:12.883 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 13:02:13.237 [debug] QUERY OK source="media_items" db=2.4ms idle=358.2ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND m0."media_id" IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [23, "QASZbKPkS08", "pr7MMAFzHe8", "DG0BSdc6kKg", "o7DJZCU8q34", "G5A2QGwRmS4", "PER4GK9LCTA", "GzIS1WZFKtc", "24P4MFV-HrM", "6x6df3uagb4", "vALU9LhFKhE", "KF1grNBv5hU", "SLSPmp8-tXE", "53liPfHBgYQ", "zykmoM0qjbA", "boyfPk5qdBM", "H2VYuo7yb2o", "75_mYLpHDr4", "PSnlGB9aKVI", "vFBFSi2XqrQ", "X2z1ugOwR2A", "ePV6FKD1J9U", "ipxj_tl_6XY", "6l9-ctzSbCo", "xu3DTyCW3Yk", "wpAt0QaSk7U", "NXy9Sg0KIMY", "ml5AG_Q0y6w", "h_Uq6-e06y8", "37_rLteuwG4", "QCbf0kOJ8lA"] 13:02:13.240 [debug] QUERY OK source="media_items" db=0.7ms queue=0.1ms idle=361.6ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [23] 13:02:13.244 [debug] QUERY OK source="tasks" db=0.5ms idle=361.0ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [202916, 23, ~U[2026-01-03 02:02:13Z], ~U[2026-01-03 02:02:13Z]] 13:02:13.245 [info] {"args":{"id":23},"id":202888,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":372146,"event":"job:stop","queue_time":633444,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 13:02:13.874 [info] {"args":{"id":25},"id":202889,"meta":{},"system_time":1767405733874355388,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 13:02:13.875 [debug] QUERY OK source="sources" db=0.7ms idle=630.3ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [25] 13:02:13.876 [debug] QUERY OK source="settings" db=0.5ms idle=630.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:02:13.877 [debug] QUERY OK source="media_profiles" db=0.7ms idle=623.4ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:02:13.878 [debug] QUERY OK source="settings" db=0.6ms idle=9.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:02:13.878 [debug] Fetching recent media IDs from YouTube API for playlist: UUWstkeBSSIEgw6n5qnlXXuA 13:02:13.879 [debug] QUERY OK source="settings" db=0.8ms idle=4.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:02:13.879 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 13:02:14.203 [debug] QUERY OK source="media_items" db=2.0ms idle=325.6ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND m0."media_id" IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [25, "_sYSZI--9TA", "T7P86y4vYKs", "qWpf9ysgE04", "81v7r86tRRE", "a3LYS6jzPKA", "o5UKHwwdhmA", "6CCxzLKCHYA", "VONzFNo8uW4", "jJUysp-6qBs", "3KzmAquL3e4", "5cgK_MdFz7s", "bHpsXfutTFY", "kVhFNQj86Ng", "nyd40ZDhRw4"] 13:02:14.206 [debug] QUERY OK source="media_items" db=0.8ms queue=0.1ms idle=328.8ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [25] 13:02:14.210 [debug] QUERY OK source="tasks" db=0.7ms idle=330.4ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [202917, 25, ~U[2026-01-03 02:02:14Z], ~U[2026-01-03 02:02:14Z]] 13:02:14.211 [info] {"args":{"id":25},"id":202889,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":336522,"event":"job:stop","queue_time":620920,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 13:02:14.879 [info] {"args":{"id":17},"id":202890,"meta":{},"system_time":1767405734879054610,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 13:02:14.880 [debug] QUERY OK source="sources" db=0.5ms queue=0.2ms idle=669.2ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [17] 13:02:14.882 [debug] QUERY OK source="settings" db=0.5ms queue=0.2ms idle=669.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:02:14.883 [debug] QUERY OK source="media_profiles" db=0.4ms queue=0.1ms idle=663.5ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:02:14.884 [debug] QUERY OK source="settings" db=0.3ms queue=0.1ms idle=11.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:02:14.884 [debug] Fetching recent media IDs from YouTube API for playlist: UUEIwxahdLz7bap-VDs9h35A 13:02:14.885 [debug] QUERY OK source="settings" db=0.2ms queue=0.1ms idle=6.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:02:14.885 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 13:02:15.255 [debug] QUERY OK source="media_items" db=2.3ms idle=372.4ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND m0."media_id" IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [17, "kuMUquaeE6g", "-NzfTE8RI4w", "2eiYALLYBFE", "J_vXK9uvRf4", "tRDxBwverlI", "ymlNErMdI2k", "hM1l19H0tX8", "qg01MgiVT9k", "a3l6FdpltbQ", "NtZaP8VMv0c", "ayicYezINas", "zoTuSOEOvPw", "U7NHNT3M-tw", "B_PCZiNlmPw", "5glksNTKkZI", "iDsb-pxE3fA", "7PJi9KSDVbQ", "CfhsW1kaa2Q", "pleHURTV6fU", "T47s4L1Wje4", "LLlghvxVoH0", "K4542wtX8B4", "rf-efIZI_Dg", "OXvdwc6NDqM", "nGEHUbTtpPY", "0FybegjTkgw", "3TgdCWBV0pg", "Qjd4CREfYbo", "pqnyUemUDF4", "6-FQSEVc_cs", "BvoDuNZ9gLA", "AjJfefo41M8", "dJSGJ1-9XWw", "Mcg9GcilBfU", "MQSwyrjTV2M", "o-dZKBwbsis", "matUCqoiSGk", "0_VdGzEk5-M", "PAOpkv0fpik", "VdwSMytC7y4", "tw5tQPm-B00", "vkD3-msLIHg", "INq7pAmaUuk", "mfTVxFapdLw", "kY2YeM5fNDw", "lkWRiks6luc", "yiCM_i8r4RM", "XzBMFsZT5gM", "dKN6XatdVkY", ...] 13:02:15.260 [debug] QUERY OK source="media_items" db=2.7ms idle=375.1ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [17] 13:02:15.264 [debug] QUERY OK source="tasks" db=0.3ms idle=378.1ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [202918, 17, ~U[2026-01-03 02:02:15Z], ~U[2026-01-03 02:02:15Z]] 13:02:15.265 [info] {"args":{"id":17},"id":202890,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":385129,"event":"job:stop","queue_time":636267,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 13:02:15.414 [info] GET /sources/11/media/58559 13:02:15.414 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "58559", "source_id" => "11"} Pipelines: [:browser] 13:02:15.416 [debug] QUERY OK source="media_items" db=0.4ms queue=0.1ms idle=152.7ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [58559] 13:02:15.417 [debug] QUERY OK source="sources" db=0.3ms idle=152.9ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [11] 13:02:15.417 [debug] QUERY OK source="tasks" db=0.7ms queue=0.1ms idle=153.3ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [58559] 13:02:15.418 [debug] QUERY OK source="oban_jobs" db=0.4ms idle=153.2ms SELECT o0."id", o0."state", o0."queue", o0."worker", o0."args", o0."meta", o0."tags", o0."errors", o0."attempt", o0."attempted_by", o0."max_attempts", o0."priority", o0."attempted_at", o0."cancelled_at", o0."completed_at", o0."discarded_at", o0."inserted_at", o0."scheduled_at", o0."id" FROM "oban_jobs" AS o0 WHERE (o0."id" = ?) [201963] 13:02:15.419 [debug] QUERY OK source="settings" db=0.2ms queue=0.1ms idle=146.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:02:15.420 [debug] QUERY OK source="settings" db=0.1ms idle=4.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:02:15.421 [debug] QUERY OK source="settings" db=0.6ms idle=3.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:02:15.424 [debug] QUERY OK source="media_profiles" db=0.6ms queue=0.1ms idle=6.0ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:02:15.437 [info] Sent 200 in 23ms 13:02:18.095 [info] GET /sources/8/media/58878 13:02:18.096 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "58878", "source_id" => "8"} Pipelines: [:browser] 13:02:18.097 [debug] QUERY OK source="media_items" db=0.6ms queue=0.1ms idle=1317.7ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [58878] 13:02:18.099 [debug] QUERY OK source="tasks" db=0.8ms queue=0.1ms idle=1319.3ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [58878] 13:02:18.099 [debug] QUERY OK source="sources" db=0.9ms idle=1319.4ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [8] 13:02:18.100 [debug] QUERY OK source="oban_jobs" db=0.5ms idle=1222.3ms SELECT o0."id", o0."state", o0."queue", o0."worker", o0."args", o0."meta", o0."tags", o0."errors", o0."attempt", o0."attempted_by", o0."max_attempts", o0."priority", o0."attempted_at", o0."cancelled_at", o0."completed_at", o0."discarded_at", o0."inserted_at", o0."scheduled_at", o0."id" FROM "oban_jobs" AS o0 WHERE (o0."id" = ?) [202125] 13:02:18.101 [debug] QUERY OK source="settings" db=0.4ms idle=220.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:02:18.101 [debug] QUERY OK source="settings" db=0.3ms idle=3.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:02:18.102 [debug] QUERY OK source="settings" db=0.4ms idle=2.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:02:18.104 [debug] QUERY OK source="media_profiles" db=0.4ms idle=4.1ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:02:18.122 [info] Sent 200 in 26ms 13:02:42.496 [info] {"source":"oban","duration":3077,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:02:42.544 [debug] Tzdata polling for update. 13:02:42.827 [debug] Tzdata polling shows the loaded tz database is up to date. 13:02:46.274 [info] GET /sources/8/media/58973 13:02:46.275 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "58973", "source_id" => "8"} Pipelines: [:browser] 13:02:46.276 [debug] QUERY OK source="media_items" db=0.8ms idle=496.3ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [58973] 13:02:46.277 [debug] QUERY OK source="tasks" db=0.5ms idle=497.6ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [58973] 13:02:46.277 [debug] QUERY OK source="sources" db=0.7ms queue=0.1ms idle=497.7ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [8] 13:02:46.278 [debug] QUERY OK source="oban_jobs" db=0.5ms idle=498.9ms SELECT o0."id", o0."state", o0."queue", o0."worker", o0."args", o0."meta", o0."tags", o0."errors", o0."attempt", o0."attempted_by", o0."max_attempts", o0."priority", o0."attempted_at", o0."cancelled_at", o0."completed_at", o0."discarded_at", o0."inserted_at", o0."scheduled_at", o0."id" FROM "oban_jobs" AS o0 WHERE (o0."id" = ?) [202130] 13:02:46.279 [debug] QUERY OK source="settings" db=0.3ms queue=0.1ms idle=300.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:02:46.279 [debug] QUERY OK source="settings" db=0.1ms idle=3.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:02:46.280 [debug] QUERY OK source="settings" db=0.2ms idle=3.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:02:46.283 [debug] QUERY OK source="media_profiles" db=1.1ms idle=4.1ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:02:46.318 [info] Sent 200 in 43ms 13:03:00.120 [info] {"source":"oban","duration":348,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 13:03:01.009 [info] GET /sources/22/media/21296 13:03:01.010 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "21296", "source_id" => "22"} Pipelines: [:browser] 13:03:01.011 [debug] QUERY OK source="media_items" db=1.0ms idle=1231.4ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [21296] 13:03:01.013 [debug] QUERY OK source="sources" db=0.8ms idle=1233.3ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [22] 13:03:01.013 [debug] QUERY OK source="tasks" db=1.5ms idle=1233.2ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [21296] 13:03:01.015 [debug] QUERY OK source="settings" db=0.6ms idle=993.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:03:01.015 [debug] QUERY OK source="settings" db=0.3ms idle=895.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:03:01.016 [debug] QUERY OK source="settings" db=0.3ms idle=4.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:03:01.017 [debug] QUERY OK source="media_profiles" db=0.6ms idle=4.0ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:03:01.050 [info] Sent 200 in 40ms 13:03:12.500 [info] {"source":"oban","duration":2202,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:03:40.607 [info] GET /sources/11/media/58571 13:03:40.607 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "58571", "source_id" => "11"} Pipelines: [:browser] 13:03:40.609 [debug] QUERY OK source="media_items" db=0.9ms queue=0.1ms idle=1829.3ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [58571] 13:03:40.611 [debug] QUERY OK source="tasks" db=0.8ms queue=0.1ms idle=1831.2ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [58571] 13:03:40.611 [debug] QUERY OK source="sources" db=0.6ms idle=1483.3ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [11] 13:03:40.612 [debug] QUERY OK source="oban_jobs" db=0.7ms idle=832.7ms SELECT o0."id", o0."state", o0."queue", o0."worker", o0."args", o0."meta", o0."tags", o0."errors", o0."attempt", o0."attempted_by", o0."max_attempts", o0."priority", o0."attempted_at", o0."cancelled_at", o0."completed_at", o0."discarded_at", o0."inserted_at", o0."scheduled_at", o0."id" FROM "oban_jobs" AS o0 WHERE (o0."id" = ?) [201970] 13:03:40.613 [debug] QUERY OK source="settings" db=0.4ms idle=482.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:03:40.614 [debug] QUERY OK source="settings" db=0.3ms idle=4.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:03:40.615 [debug] QUERY OK source="settings" db=0.4ms idle=4.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:03:40.618 [debug] QUERY OK source="media_profiles" db=0.7ms idle=6.1ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:03:40.667 [info] Sent 200 in 60ms 13:03:42.146 [info] {"args":{"id":7},"id":202895,"meta":{},"system_time":1767405822146643143,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 13:03:42.147 [debug] QUERY OK source="sources" db=0.4ms idle=367.1ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [7] 13:03:42.148 [debug] QUERY OK source="settings" db=0.3ms idle=368.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:03:42.149 [debug] QUERY OK source="media_profiles" db=0.4ms queue=0.1ms idle=368.8ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:03:42.150 [debug] QUERY OK source="settings" db=0.4ms queue=0.1ms idle=11.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:03:42.150 [debug] Fetching recent media IDs from YouTube API for playlist: UUwnKziETDbHJtx78nIkfYug 13:03:42.151 [debug] QUERY OK source="settings" db=0.2ms idle=4.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:03:42.151 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 13:03:42.502 [info] {"source":"oban","duration":1666,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:03:42.527 [debug] QUERY OK source="media_items" db=2.8ms idle=375.5ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND m0."media_id" IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [7, "mC5NdpSMDks", "ccV3u3D9ONE", "cVCDjEfPzII", "n0X2rqzKTgM", "dcuCvRNqmpY", "GG1qX8jHKGo", "k9wkleHFvo0", "CWoYVlMuUNQ", "xlfeieH4z38", "eZM2Ik-FHEU", "CtcTG8-qzbA", "6Mmj7mf1qlg", "InwVO9qBjqs", "1Hp-W2bpPrw", "VtE5sTpkn7k", "8dOJypt2F70", "Evm4t4prtWo", "taLzgvbrnv0", "rgCrnyf5JEI", "PHhc-48JT3U", "vFKjpNNjNGw", "VJQlOI70ubw", "E5cfNq0DO90", "DNBGSsZatbY", "pna1NyaHTls", "CUHao-vA98g", "cPN9BJe_RQw", "rCBt4XgCX-0", "f4g6KKGMmEI", "P_I5Jsc3xRw", "fPaU2l7RktM", "0PVwt01b6fs", "0qMDM4Y4Hwo", "Ld285PDsHvs", "p1mQC71wplA", "9k5JhKK6WlA", "WPxrifmtlQI", "nVNBmK7a1y8", "QDnMYztaxfI", "gxsaWhXG1Gg", "RMtkKiyrXic", "JKlJ6OW67Bk", "Sjmb8O-fRWI", "qZhD4G7ENSY", "OTWDzMjgsEY", "Y_eCu_pW6-4", "DplgNsjOPRg", "l6hHI3AVoYM", "joAhvj7dfsc", ...] 13:03:42.538 [debug] QUERY OK source="media_items" db=7.7ms idle=380.6ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [7] 13:03:42.546 [debug] QUERY OK source="tasks" db=1.1ms queue=0.1ms idle=42.3ms INSERT INTO "tasks" ("job_id","media_item_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [202919, 8350, ~U[2026-01-03 02:03:42Z], ~U[2026-01-03 02:03:42Z]] 13:03:42.555 [debug] QUERY OK source="tasks" db=1.2ms queue=0.3ms idle=10.4ms INSERT INTO "tasks" ("job_id","media_item_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [202920, 8380, ~U[2026-01-03 02:03:42Z], ~U[2026-01-03 02:03:42Z]] 13:03:42.562 [debug] QUERY OK source="tasks" db=0.5ms idle=10.5ms INSERT INTO "tasks" ("job_id","media_item_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [202921, 8401, ~U[2026-01-03 02:03:42Z], ~U[2026-01-03 02:03:42Z]] 13:03:42.565 [debug] QUERY OK source="tasks" db=0.3ms idle=4.5ms INSERT INTO "tasks" ("job_id","media_item_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [202922, 8418, ~U[2026-01-03 02:03:42Z], ~U[2026-01-03 02:03:42Z]] 13:03:42.568 [debug] QUERY OK source="tasks" db=0.7ms idle=3.1ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [202923, 7, ~U[2026-01-03 02:03:42Z], ~U[2026-01-03 02:03:42Z]] 13:03:42.569 [info] {"args":{"id":7},"id":202895,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":422329,"event":"job:stop","queue_time":492498,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 13:03:50.176 [info] {"args":{"id":24},"id":202896,"meta":{},"system_time":1767405830176611665,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 13:03:50.177 [debug] QUERY OK source="sources" db=0.4ms queue=0.1ms idle=397.3ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [24] 13:03:50.179 [debug] QUERY OK source="settings" db=0.4ms queue=0.1ms idle=398.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:03:50.180 [debug] QUERY OK source="media_profiles" db=0.5ms queue=0.1ms idle=399.3ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:03:50.181 [debug] QUERY OK source="settings" db=0.4ms queue=0.1ms idle=12.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:03:50.181 [debug] Fetching recent media IDs from YouTube API for playlist: UUNTjSZfAK117b2kFGNCJfdA 13:03:50.182 [debug] QUERY OK source="settings" db=0.2ms queue=0.1ms idle=5.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:03:50.182 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 13:03:50.595 [debug] QUERY OK source="media_items" db=2.7ms idle=413.9ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND m0."media_id" IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [24, "2J48c2sukbo", "zq9gpqgWFv8", "EWdphas_OP4", "-U2sQ3e3R-0", "XdytKwHuG_8", "t-hori2Io14", "Xbemvi42Ngs", "91m4MQw_sZI", "GfUIbPqAMQs", "4VpVt3zdvL8", "q6Kd5C7O-F8", "EV6DSqTOXM0", "mMvfBUNNKIY", "C215grXAMCk", "_x6TE7hbE1k", "vycMxLco0a0", "lJWhisaNv8E", "4Blxc8mVzQs", "ztqcWc5aaks", "0Dvn039qD8I", "Vx69evZOEAE", "4dzZ44-xVds", "Rews5WNxiNk", "f-BFFWzh9uE", "RfJSMWHO0tY", "gMeUOURvDP8", "LEiL1np9sSM", "F-QeDtQ8Gy4", "9FSIF281OAo", "Shav52BfzWk", "dsCfQ3y5tHQ", "0rpt5sMb7cw", "Fe7Y152ak3Y", "HEuablkqrCg", "BRUTYHBJ_Z4", "gpaV4bgEG-g", "ppjFdEbIS4g", "lEhEMRA17bg", "tpIXmmV4ib4", "LBYQ_NLVKCw", "JsdM3k3QiPc", "TNmSVjGyZx0", "OMVYZziNjhc", "uyfyFRvng3c", "YFBg5NNEW4g", "IkZe4pXDv0k", "ZT0in30U-ug", "kqDqSLOuxmM", "ZgLsNSWN46o", ...] 13:03:50.598 [debug] QUERY OK source="media_items" db=1.0ms idle=417.9ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [24] 13:03:50.600 [debug] QUERY OK source="tasks" db=0.4ms idle=418.4ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [202924, 24, ~U[2026-01-03 02:03:50Z], ~U[2026-01-03 02:03:50Z]] 13:03:50.601 [info] {"args":{"id":24},"id":202896,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":424480,"event":"job:stop","queue_time":547568,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 13:03:50.952 [info] GET /sources/8/media/58875 13:03:50.952 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "58875", "source_id" => "8"} Pipelines: [:browser] 13:03:50.954 [debug] QUERY OK source="media_items" db=0.5ms queue=0.1ms idle=353.6ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [58875] 13:03:50.955 [debug] QUERY OK source="tasks" db=0.6ms idle=354.5ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [58875] 13:03:50.955 [debug] QUERY OK source="sources" db=0.7ms idle=354.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [8] 13:03:50.956 [debug] QUERY OK source="oban_jobs" db=0.3ms idle=354.5ms SELECT o0."id", o0."state", o0."queue", o0."worker", o0."args", o0."meta", o0."tags", o0."errors", o0."attempt", o0."attempted_by", o0."max_attempts", o0."priority", o0."attempted_at", o0."cancelled_at", o0."completed_at", o0."discarded_at", o0."inserted_at", o0."scheduled_at", o0."id" FROM "oban_jobs" AS o0 WHERE (o0."id" = ?) [202123] 13:03:50.957 [debug] QUERY OK source="settings" db=0.3ms queue=0.1ms idle=348.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:03:50.958 [debug] QUERY OK source="settings" db=0.3ms idle=3.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:03:50.959 [debug] QUERY OK source="settings" db=0.3ms idle=3.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:03:50.960 [debug] QUERY OK source="media_profiles" db=0.4ms idle=4.1ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:03:50.989 [info] Sent 200 in 36ms 13:04:00.121 [info] {"source":"oban","duration":413,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 13:04:12.504 [info] {"source":"oban","duration":1448,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:04:16.690 [info] GET /sources/22/media/21280 13:04:16.690 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "21280", "source_id" => "22"} Pipelines: [:browser] 13:04:16.692 [debug] QUERY OK source="media_items" db=0.9ms queue=0.1ms idle=1910.5ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [21280] 13:04:16.693 [debug] QUERY OK source="tasks" db=0.3ms idle=1453.8ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [21280] 13:04:16.694 [debug] QUERY OK source="sources" db=0.5ms queue=0.1ms idle=912.4ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [22] 13:04:16.694 [debug] QUERY OK source="settings" db=0.2ms idle=913.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:04:16.695 [debug] QUERY OK source="settings" db=0.1ms idle=452.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:04:16.696 [debug] QUERY OK source="settings" db=0.2ms idle=3.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:04:16.697 [debug] QUERY OK source="media_profiles" db=0.3ms idle=3.0ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:04:16.726 [info] Sent 200 in 36ms 13:04:22.266 [info] {"args":{"id":22},"id":202897,"meta":{},"system_time":1767405862266299934,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 13:04:22.267 [debug] QUERY OK source="sources" db=0.4ms idle=485.7ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [22] 13:04:22.267 [debug] QUERY OK source="settings" db=0.2ms idle=486.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:04:22.268 [debug] QUERY OK source="media_profiles" db=0.3ms idle=487.0ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:04:22.268 [debug] QUERY OK source="settings" db=0.2ms idle=8.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:04:22.268 [debug] Fetching recent media IDs from YouTube API for playlist: UUP1RHyOhO98Yn2rMbDBirxA 13:04:22.269 [debug] QUERY OK source="settings" db=0.2ms idle=2.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:04:22.269 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 13:04:22.582 [debug] QUERY OK source="media_items" db=2.5ms idle=312.5ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND m0."media_id" IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [22, "N5RzDzO54gQ", "5glegyagphQ", "VtiV_RfFqNM", "qNYyH7bMcbI", "MPdiQsg_zQ8", "4-VOc2Aich8", "gMrBK9rp6As", "p0lqYk8_uMI", "aKpQHxUiwxc", "KsuhL0zVo3I", "pCJcoGDsbxc", "_5AR-GKeqlk", "VcJG7rIOjb0", "vRzAE_0VnXQ", "uj_bcWLWMtw", "xRyiudwo_jM", "pTMRT4CRUoM", "W8_LEBSOsPg", "YZuP7d99kCw"] 13:04:22.583 [debug] QUERY OK source="settings" db=0.5ms idle=315.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:04:22.584 [debug] QUERY OK source="settings" db=0.7ms idle=315.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:04:22.584 [debug] Running yt-dlp command for action: get_media_attributes 13:04:22.587 [debug] QUERY OK source="settings" db=0.4ms idle=318.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:04:22.588 [debug] QUERY OK source="settings" db=0.4ms idle=318.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:04:22.588 [debug] QUERY OK source="settings" db=0.1ms idle=6.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:04:22.589 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=gMrBK9rp6As --simulate --skip-download --output /downloads/White Raven/Season %(upload_date>%Y)S/s%(upload_date>%Y)Se%(upload_date>%m%d)S00 - %(title)S.%(ext)S --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --print-to-file %(.{id,title,live_status,original_url,description,aspect_ratio,duration,upload_date,timestamp,playlist_index,filename})j /tmp/pinchflat/data/81/be/81bec5d5ae7c51c67875c5d90ce24ff9afa17837ce4b7c9c7021b909e9600d6a.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 13:04:27.151 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=gMrBK9rp6As --simulate --skip-download --output /downloads/White Raven/Season %(upload_date>%Y)S/s%(upload_date>%Y)Se%(upload_date>%m%d)S00 - %(title)S.%(ext)S --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --print-to-file %(.{id,title,live_status,original_url,description,aspect_ratio,duration,upload_date,timestamp,playlist_index,filename})j /tmp/pinchflat/data/81/be/81bec5d5ae7c51c67875c5d90ce24ff9afa17837ce4b7c9c7021b909e9600d6a.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 1 with: ERROR: [youtube] gMrBK9rp6As: Offline. 13:04:27.152 [error] Error creating media item 'gMrBK9rp6As' from URL: {:error, "ERROR: [youtube] gMrBK9rp6As: Offline.\n", 1} 13:04:27.153 [debug] QUERY OK source="media_items" db=0.6ms idle=1371.3ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [22] 13:04:27.157 [debug] QUERY OK source="tasks" db=0.8ms idle=1375.7ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [202925, 22, ~U[2026-01-03 02:04:27Z], ~U[2026-01-03 02:04:27Z]] 13:04:27.158 [info] {"args":{"id":22},"id":202897,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":4891479,"event":"job:stop","queue_time":917546,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 13:04:29.961 [info] GET /sources/18/media/59084 13:04:29.961 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "59084", "source_id" => "18"} Pipelines: [:browser] 13:04:29.962 [debug] QUERY OK source="media_items" db=0.9ms idle=1180.4ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [59084] 13:04:29.963 [debug] QUERY OK source="tasks" db=0.6ms idle=1181.9ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [59084] 13:04:29.964 [debug] QUERY OK source="sources" db=0.8ms idle=1182.1ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [18] 13:04:29.965 [debug] QUERY OK source="oban_jobs" db=0.7ms idle=1183.4ms SELECT o0."id", o0."state", o0."queue", o0."worker", o0."args", o0."meta", o0."tags", o0."errors", o0."attempt", o0."attempted_by", o0."max_attempts", o0."priority", o0."attempted_at", o0."cancelled_at", o0."completed_at", o0."discarded_at", o0."inserted_at", o0."scheduled_at", o0."id" FROM "oban_jobs" AS o0 WHERE (o0."id" = ?) [202150] 13:04:29.966 [debug] QUERY OK source="settings" db=0.5ms idle=685.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:04:29.967 [debug] QUERY OK source="settings" db=0.3ms idle=4.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:04:29.968 [debug] QUERY OK source="settings" db=0.2ms idle=4.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:04:29.969 [debug] QUERY OK source="media_profiles" db=0.2ms idle=5.2ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:04:29.995 [info] Sent 200 in 34ms 13:04:32.300 [info] {"args":{"id":3},"id":202898,"meta":{},"system_time":1767405872299992985,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 13:04:32.300 [debug] QUERY OK source="sources" db=0.4ms idle=519.2ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [3] 13:04:32.301 [debug] QUERY OK source="settings" db=0.6ms idle=520.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:04:32.302 [debug] QUERY OK source="media_profiles" db=0.4ms idle=521.0ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:04:32.303 [debug] QUERY OK source="settings" db=0.2ms queue=0.4ms idle=10.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:04:32.303 [debug] Fetching recent media IDs from YouTube API for playlist: UUISrVZmDM4x-Rq9mmNUw7Zw 13:04:32.304 [debug] QUERY OK source="settings" db=0.3ms idle=4.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:04:32.304 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 13:04:32.763 [debug] QUERY OK source="media_items" db=4.1ms idle=458.3ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND m0."media_id" IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [3, "CtF5dLHITYA", "SGJkxRdkRGg", "OUCt85aJaAA", "9gARPYZOka4", "-uH-Gi5tjEw", "qwUBBQKYX94", "s8VLDSQJ8nA", "EvPfr0lKkh4", "msXzAxF49gA", "hQCWaSvjkU0", "RcmjVsy3a-g", "xtuNc9vYJG4", "fj2tcg8OzsM", "2FZ4IfPACDM", "2Q9DzW20YJ8", "IVsWFGOE_mw", "vPxpMcv2Z4Y", "Zverj_ldlhY", "pQK8xasPd9Q", "_Yo7nh8u9pk", "4HzltsOvc0A", "a8UBLMm71JY", "3vqbr7-6Twk", "Df0iVjAKJZw", "n-X-AJpHUyI", "4CV7jI0e0Hw", "nqPoocCKci8", "5IIOdWnJGxg", "jkPL8BaM4ko", "CzeQtnRmUZ0", "9u-0d2IVZ3I", "igtvNmqsKM0", "47XDpW4nOzk", "8xvd7xSLQOo", "PnQPZMN0kIY", "feDph2WgRfI", "Z5FZ2XfX4Uc", "e0DxPopyrqM", "YvaK-Tjp2ck", "6_CctUPWX4I", "_DzHKw8yK58", "VnAkeiehyCg", "EFW1iCguDV8", "CEj7B1VzUwU", "3cy5fWUssjQ", "ZnjoTYmqLhs", "5IxtizzvaWw", "ZnBsMRl-EL0", "ET-M3T8E0PU", ...] 13:04:32.769 [debug] QUERY OK source="media_items" db=4.1ms idle=463.5ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [3] 13:04:32.775 [debug] QUERY OK source="tasks" db=1.1ms idle=469.2ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [202926, 3, ~U[2026-01-03 02:04:32Z], ~U[2026-01-03 02:04:32Z]] 13:04:32.776 [info] {"args":{"id":3},"id":202898,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":475136,"event":"job:stop","queue_time":451592,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 13:04:42.506 [info] {"source":"oban","duration":1675,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:04:46.348 [info] {"args":{"id":1},"id":202899,"meta":{},"system_time":1767405886348288498,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 13:04:46.349 [debug] QUERY OK source="sources" db=0.7ms idle=567.6ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 13:04:46.350 [debug] QUERY OK source="settings" db=0.3ms idle=568.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:04:46.350 [debug] QUERY OK source="media_profiles" db=0.3ms idle=569.4ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:04:46.351 [debug] QUERY OK source="settings" db=0.5ms idle=11.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:04:46.352 [debug] Fetching recent media IDs from YouTube API for playlist: UU54SLBnD5k5U3Q6N__UjbAw 13:04:46.352 [debug] QUERY OK source="settings" db=0.3ms idle=4.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:04:46.352 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 13:04:46.762 [debug] QUERY OK source="media_items" db=4.2ms idle=408.2ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND m0."media_id" IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [1, "UYCKIroDVBY", "ynOiaE9f6NY", "At_WjGosTNM", "_s7ZzdPoVZE", "ulhKFEKXIEI", "YpQ2jupcrHk", "PetMnG6cCDw", "VdxlXCnA1DM", "uj2s7HZQigU", "rZ7Y_gPAHig", "LTmK8Ab6IFE", "sZKNVGI8xt0", "_PUZIf6VQto", "J2-1ZErtS7A", "OEyptSEM5Tw", "HLeY2_hJvRk", "DkZ5uXcDxjc", "zPWe_aBuNfM", "PZN18led4ok", "66F09ebI9gw", "Pfok4B_xyaI", "e5HEGCCadBU", "hYFsHfPquPg", "nKsnfEB29ek", "OpDh_O473Ms", "ZTtZ12XtQpg", "TphXloX3PEI", "4Qhp4VPP2Wo", "J5l7jvbp3u8", "uL_YQMkkbUg", "SAZ17l0EwxI", "fTa_T2pVwuk", "6HpTVfX0SvI", "XlIWsRyXL8U", "nM1GQNJU6LQ", "WVN1LNy1zgo", "0Fxf6_q7qHc", "dL0KPsy-Dww", "G43wJ7YyWzM", "yVy89TnL9Zg", "BR1VRJDu-gc", "-2HeoqiMC6s", "7WXyx51z5G8", "jCk-9S8PQyc", "vGEIHv1XelY", "rOI7HYGGHpo", "gNeGHhU6UaI", "gUlkwSHOT7Q", "tpf7TxliCxA", ...] 13:04:46.769 [debug] QUERY OK source="media_items" db=5.6ms idle=413.8ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [1] 13:04:46.774 [debug] QUERY OK source="tasks" db=0.8ms idle=420.5ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [202927, 1, ~U[2026-01-03 02:04:46Z], ~U[2026-01-03 02:04:46Z]] 13:04:46.775 [info] {"args":{"id":1},"id":202899,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":425902,"event":"job:stop","queue_time":547675,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 13:04:49.449 [info] GET /sources/13/media/55735 13:04:49.450 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "55735", "source_id" => "13"} Pipelines: [:browser] 13:04:49.451 [debug] QUERY OK source="media_items" db=0.4ms queue=0.1ms idle=1669.3ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [55735] 13:04:49.452 [debug] QUERY OK source="tasks" db=0.4ms queue=0.1ms idle=1670.6ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [55735] 13:04:49.452 [debug] QUERY OK source="sources" db=0.8ms idle=1103.4ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [13] 13:04:49.454 [debug] QUERY OK source="settings" db=0.2ms queue=0.1ms idle=672.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:04:49.454 [debug] QUERY OK source="settings" db=0.3ms queue=0.1ms idle=102.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:04:49.456 [debug] QUERY OK source="settings" db=0.3ms idle=4.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:04:49.458 [debug] QUERY OK source="media_profiles" db=0.3ms idle=5.5ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:04:49.574 [info] Sent 200 in 127ms 13:05:00.122 [info] {"source":"oban","duration":276,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 13:05:07.427 [info] {"args":{"id":2},"id":202900,"meta":{},"system_time":1767405907427131988,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 13:05:07.428 [debug] QUERY OK source="sources" db=0.9ms idle=646.5ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [2] 13:05:07.429 [debug] QUERY OK source="settings" db=0.5ms idle=647.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:05:07.430 [debug] QUERY OK source="media_profiles" db=0.6ms idle=648.5ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:05:07.431 [debug] QUERY OK source="settings" db=0.5ms idle=10.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:05:07.431 [debug] Fetching recent media IDs from YouTube API for playlist: UUeE3lj6pLX_gCd0Yvns517Q 13:05:07.431 [debug] QUERY OK source="settings" db=0.3ms idle=4.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:05:07.431 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 13:05:08.056 [debug] QUERY OK source="media_items" db=3.7ms idle=623.7ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND m0."media_id" IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [2, "0k6I__61QDc", "tAnxIOSrasI", "qGmURDZnDhc", "vBsPoGzQPxA", "TiJoEoREmdE", "C-CkKUyzQhA", "K1UWf6n1FmY", "9VKS1P-aXSc", "kt_SNpPa2w4", "oaXa30IfZMc", "pUBcfLBwPXw", "WkG24B0xw1E", "fBQxlA3KI5U", "HbeqOllBS9o", "li1fOq_qqHM", "rsqGEZeczYw", "d7HFMZOp0S4", "oipxUVJUZrc", "cTxE_oPyD9Q", "yJlKrUX8Bvk", "pYtoIdfLeHA", "qPMGKmyQ1AA", "7W651YDFjhc", "EfUXdMBXauI", "804ky1qeBuE", "DRMng-9g9Ng", "Nzp4LPVF_7M", "1psbOjlzkyA", "IwMM9c9Q0Pw", "xhbzG8V0eSA", "-CSyf5_q-XQ", "C__g4XPdYRY", "7-FRyPsqWG0", "0-fliBPsvZI", "xLZYbjMl3hY", "qs36351JQys", "-aty2xx6kTI", "Ty7NA3HvUsk", "w6xdmHLxzSM", "-5YmR5lvMlQ", "fFbRmFdCoYc", "XkPAB-oXAoU", "rTecGGMrRKc", "tHjU0F1najQ", "Z6otzigVvWM", "9m36Ncgctbg", "B1KUJbbpoK0", "rqGLjKlA_tM", "PZDZuoa3kJE", ...] 13:05:08.072 [debug] QUERY OK source="media_items" db=14.9ms idle=628.4ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [2] 13:05:08.079 [debug] QUERY OK source="tasks" db=1.3ms queue=0.1ms idle=646.3ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [202928, 2, ~U[2026-01-03 02:05:08Z], ~U[2026-01-03 02:05:08Z]] 13:05:08.081 [info] {"args":{"id":2},"id":202900,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":652761,"event":"job:stop","queue_time":532914,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 13:05:09.369 [info] GET /sources/12/media/58550 13:05:09.369 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "58550", "source_id" => "12"} Pipelines: [:browser] 13:05:09.370 [debug] QUERY OK source="media_items" db=0.3ms idle=1292.2ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [58550] 13:05:09.371 [debug] QUERY OK source="sources" db=0.3ms idle=1291.4ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [12] 13:05:09.372 [debug] QUERY OK source="tasks" db=0.7ms idle=1289.6ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [58550] 13:05:09.373 [debug] QUERY OK source="oban_jobs" db=0.4ms idle=1282.7ms SELECT o0."id", o0."state", o0."queue", o0."worker", o0."args", o0."meta", o0."tags", o0."errors", o0."attempt", o0."attempted_by", o0."max_attempts", o0."priority", o0."attempted_at", o0."cancelled_at", o0."completed_at", o0."discarded_at", o0."inserted_at", o0."scheduled_at", o0."id" FROM "oban_jobs" AS o0 WHERE (o0."id" = ?) [201957] 13:05:09.374 [debug] QUERY OK source="settings" db=0.3ms idle=952.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:05:09.374 [debug] QUERY OK source="settings" db=0.3ms idle=3.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:05:09.375 [debug] QUERY OK source="settings" db=0.2ms idle=3.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:05:09.377 [debug] QUERY OK source="media_profiles" db=0.6ms idle=4.6ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:05:09.790 [info] Sent 200 in 420ms 13:05:12.510 [info] {"source":"oban","duration":2989,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:05:19.884 [info] GET /sources/18/media/59071 13:05:19.885 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "59071", "source_id" => "18"} Pipelines: [:browser] 13:05:19.886 [debug] QUERY OK source="media_items" db=1.0ms queue=0.1ms idle=1103.4ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [59071] 13:05:19.888 [debug] QUERY OK source="tasks" db=0.8ms idle=1105.3ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [59071] 13:05:19.888 [debug] QUERY OK source="sources" db=0.7ms idle=1105.3ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [18] 13:05:19.889 [debug] QUERY OK source="oban_jobs" db=0.6ms idle=435.7ms SELECT o0."id", o0."state", o0."queue", o0."worker", o0."args", o0."meta", o0."tags", o0."errors", o0."attempt", o0."attempted_by", o0."max_attempts", o0."priority", o0."attempted_at", o0."cancelled_at", o0."completed_at", o0."discarded_at", o0."inserted_at", o0."scheduled_at", o0."id" FROM "oban_jobs" AS o0 WHERE (o0."id" = ?) [202145] 13:05:19.890 [debug] QUERY OK source="settings" db=0.6ms queue=0.1ms idle=108.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:05:19.891 [debug] QUERY OK source="settings" db=0.4ms idle=4.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:05:19.892 [debug] QUERY OK source="settings" db=0.2ms queue=0.1ms idle=4.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:05:19.894 [debug] QUERY OK source="media_profiles" db=0.1ms idle=5.5ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:05:19.911 [info] Sent 200 in 27ms 13:05:19.953 [info] GET /sources/11/media/58565 13:05:19.953 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "58565", "source_id" => "11"} Pipelines: [:browser] 13:05:19.954 [debug] QUERY OK source="media_items" db=1.0ms queue=0.1ms idle=64.0ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [58565] 13:05:19.956 [debug] QUERY OK source="tasks" db=1.1ms idle=64.5ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [58565] 13:05:19.957 [debug] QUERY OK source="sources" db=1.6ms idle=63.9ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [11] 13:05:19.958 [debug] QUERY OK source="settings" db=0.6ms idle=65.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:05:19.959 [debug] QUERY OK source="settings" db=0.4ms idle=64.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:05:19.960 [debug] QUERY OK source="settings" db=0.5ms idle=5.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:05:19.962 [debug] QUERY OK source="media_profiles" db=0.6ms idle=5.0ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:05:19.964 [info] Sent 200 in 11ms 13:05:19.986 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=2Q9DzW20YJ8 --no-simulate --no-progress --force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --embed-subs --sub-langs en --write-thumbnail --convert-thumbnail jpg --output thumbnail:/downloads/Blondie in China/Season %(upload_date>%Y)S/s%(upload_date>%Y)Se%(upload_date>%m%d)S99 - %(title)S-thumb.%(ext)S --embed-thumbnail --convert-thumbnail jpg --write-info-json --clean-info-json --embed-metadata --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --sponsorblock-mark sponsor,intro,outro,selfpromo,preview,filler,interaction,music_offtopic --output /downloads/Blondie in China/Season %(upload_date>%Y)S/s%(upload_date>%Y)Se%(upload_date>%m%d)S99 - %(title)S.%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/00/3c/003c8ee5a3e39d6c6c7dc32fbd937ba0f34fa202ce0ae86213e1ba75fd5d08ab.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: WARNING: The extractor specified to use impersonation for this download, but no impersonate target is available. If you encounter errors, then see https://github.com/yt-dlp/yt-dlp#impersonation for information on installing the required dependencies 13:05:20.211 [debug] Running yt-dlp command for action: download_thumbnail 13:05:20.213 [debug] QUERY OK source="settings" db=0.4ms idle=255.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:05:20.214 [debug] QUERY OK source="settings" db=0.4ms idle=255.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:05:20.215 [debug] QUERY OK source="settings" db=0.4ms queue=0.1ms idle=255.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:05:20.215 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=2Q9DzW20YJ8 --no-simulate --skip-download --write-thumbnail --convert-thumbnail jpg --output /config/metadata/media_items/57629/thumbnail.%(ext)s --print-to-file after_move:%()j /tmp/pinchflat/data/26/c0/26c0ec9bfcbed73cf23de30a7ef652babe50971b3c18869e351f8d1b8c8ff345.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 13:05:28.012 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=2Q9DzW20YJ8 --no-simulate --skip-download --write-thumbnail --convert-thumbnail jpg --output /config/metadata/media_items/57629/thumbnail.%(ext)s --print-to-file after_move:%()j /tmp/pinchflat/data/26/c0/26c0ec9bfcbed73cf23de30a7ef652babe50971b3c18869e351f8d1b8c8ff345.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 13:05:28.017 [debug] QUERY OK source="media_items" db=3.9ms idle=528.4ms UPDATE "media_items" SET "media_downloaded_at" = ?, "media_filepath" = ?, "metadata_filepath" = ?, "nfo_filepath" = ?, "predicted_media_filepath" = ?, "subtitle_filepaths" = ?, "thumbnail_filepath" = ?, "updated_at" = ? WHERE "id" = ? [~U[2026-01-03 02:05:20Z], "/downloads/Blondie in China/Season 2025/s2025e112899 - Food adventure in Chongqing’s district with a SECRET!.mp4", "/downloads/Blondie in China/Season 2025/s2025e112899 - Food adventure in Chongqing’s district with a SECRET!.info.json", "/downloads/Blondie in China/Season 2025/s2025e112899 - Food adventure in Chongqing’s district with a SECRET!.nfo", "/downloads/Blondie in China/Season 2025/s2025e112899 - Food adventure in Chongqing’s district with a SECRET!.mp4", [["en", "/downloads/Blondie in China/Season 2025/s2025e112899 - Food adventure in Chongqing’s district with a SECRET!.en.srt"]], "/downloads/Blondie in China/Season 2025/s2025e112899 - Food adventure in Chongqing’s district with a SECRET!-thumb.jpg", ~U[2026-01-03 02:05:28Z], 57629] 13:05:28.034 [debug] QUERY OK source="media_items" db=1.8ms idle=250.6ms UPDATE "media_items" SET "media_redownloaded_at" = ?, "media_size_bytes" = ?, "updated_at" = ? WHERE "id" = ? [~U[2026-01-03 02:05:28Z], 493939126, ~U[2026-01-03 02:05:28Z], 57629] 13:05:28.568 [info] User scripts lifecyle file either not present or is empty. Skipping. 13:05:28.569 [info] {"args":{"id":57629,"quality_upgrade?":true},"id":202914,"meta":{},"state":"success","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":263689383,"event":"job:stop","queue_time":48875765,"attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 13:05:28.577 [info] {"args":{"id":8350},"id":202919,"meta":{},"system_time":1767405928577095899,"max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 13:05:28.578 [debug] QUERY OK source="media_items" db=0.9ms queue=0.1ms idle=559.9ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [8350] 13:05:28.578 [info] User scripts lifecyle file either not present or is empty. Skipping. 13:05:28.579 [debug] QUERY OK source="sources" db=0.7ms idle=544.3ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [7] 13:05:28.580 [debug] QUERY OK source="media_profiles" db=0.7ms idle=91.0ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:05:28.582 [debug] QUERY OK source="media_items" db=1.2ms idle=11.9ms SELECT 1 FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) LIMIT 1 [8350] 13:05:28.585 [debug] QUERY OK source="media_metadata" db=0.6ms idle=7.7ms SELECT m0."id", m0."metadata_filepath", m0."thumbnail_filepath", m0."media_item_id", m0."inserted_at", m0."updated_at", m0."media_item_id" FROM "media_metadata" AS m0 WHERE (m0."media_item_id" = ?) [8350] 13:05:28.586 [debug] QUERY OK source="media_profiles" db=0.7ms idle=7.0ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:05:28.587 [debug] QUERY OK source="settings" db=0.4ms idle=6.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:05:28.587 [debug] QUERY OK source="settings" db=0.3ms idle=6.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:05:28.588 [debug] Running yt-dlp command for action: get_downloadable_status 13:05:28.590 [debug] QUERY OK source="settings" db=0.5ms idle=6.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:05:28.590 [debug] QUERY OK source="settings" db=0.4ms idle=4.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:05:28.591 [debug] QUERY OK source="settings" db=0.3ms idle=4.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:05:28.591 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=aCES82xfgdw --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/6c/87/6c87386288ac33d228a17bc95c4e85c40321dc7e8953ea3b6a4eafc7b47ffdab.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 13:05:33.986 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=aCES82xfgdw --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/6c/87/6c87386288ac33d228a17bc95c4e85c40321dc7e8953ea3b6a4eafc7b47ffdab.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 1 with: ERROR: [youtube] aCES82xfgdw: Sign in to confirm your age. This video may be inappropriate for some users. Use --cookies-from-browser or --cookies for the authentication. See https://github.com/yt-dlp/yt-dlp/wiki/FAQ#how-do-i-pass-cookies-to-yt-dlp for how to manually pass cookies. Also see https://github.com/yt-dlp/yt-dlp/wiki/Extractors#exporting-youtube-cookies for tips on effectively exporting YouTube cookies 13:05:33.988 [debug] QUERY OK source="settings" db=0.4ms queue=0.1ms idle=479.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:05:33.989 [debug] QUERY OK source="settings" db=0.3ms queue=0.1ms idle=207.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:05:33.990 [debug] Running yt-dlp command for action: get_downloadable_status 13:05:33.993 [debug] QUERY OK source="settings" db=0.5ms idle=210.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:05:33.994 [debug] QUERY OK source="settings" db=0.5ms idle=211.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:05:33.994 [debug] QUERY OK source="settings" db=0.3ms idle=212.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:05:33.995 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=aCES82xfgdw --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/dd/5b/dd5b25a470fb68f30f8838148a9f7fc33d39f74397fdaa4d41961a355724f544.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 13:05:39.521 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=aCES82xfgdw --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/dd/5b/dd5b25a470fb68f30f8838148a9f7fc33d39f74397fdaa4d41961a355724f544.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 1 with: ERROR: [youtube] aCES82xfgdw: Sign in to confirm your age. This video may be inappropriate for some users. Use --cookies-from-browser or --cookies for the authentication. See https://github.com/yt-dlp/yt-dlp/wiki/FAQ#how-do-i-pass-cookies-to-yt-dlp for how to manually pass cookies. Also see https://github.com/yt-dlp/yt-dlp/wiki/Extractors#exporting-youtube-cookies for tips on effectively exporting YouTube cookies 13:05:39.521 [error] yt-dlp download error for media item #8350: "ERROR: [youtube] aCES82xfgdw: Sign in to confirm your age. This video may be inappropriate for some users. Use --cookies-from-browser or --cookies for the authentication. See https://github.com/yt-dlp/yt-dlp/wiki/FAQ#how-do-i-pass-cookies-to-yt-dlp for how to manually pass cookies. Also see https://github.com/yt-dlp/yt-dlp/wiki/Extractors#exporting-youtube-cookies for tips on effectively exporting YouTube cookies\n" 13:05:39.522 [error] yt-dlp download will not be retried: "ERROR: [youtube] aCES82xfgdw: Sign in to confirm your age. This video may be inappropriate for some users. Use --cookies-from-browser or --cookies for the authentication. See https://github.com/yt-dlp/yt-dlp/wiki/FAQ#how-do-i-pass-cookies-to-yt-dlp for how to manually pass cookies. Also see https://github.com/yt-dlp/yt-dlp/wiki/Extractors#exporting-youtube-cookies for tips on effectively exporting YouTube cookies\n" 13:05:39.523 [info] {"args":{"id":8350},"id":202919,"meta":{},"state":"success","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":10945174,"event":"job:stop","queue_time":106575761,"attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 13:05:39.532 [info] {"args":{"id":8380},"id":202920,"meta":{},"system_time":1767405939532348481,"max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 13:05:39.533 [debug] QUERY OK source="media_items" db=0.4ms idle=1750.9ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [8380] 13:05:39.534 [info] User scripts lifecyle file either not present or is empty. Skipping. 13:05:39.535 [debug] QUERY OK source="sources" db=0.7ms idle=1007.1ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [7] 13:05:39.536 [debug] QUERY OK source="media_profiles" db=0.4ms queue=0.1ms idle=12.2ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:05:39.537 [debug] QUERY OK source="media_items" db=0.7ms queue=0.1ms idle=6.1ms SELECT 1 FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) LIMIT 1 [8380] 13:05:39.539 [debug] QUERY OK source="media_metadata" db=0.1ms idle=6.9ms SELECT m0."id", m0."metadata_filepath", m0."thumbnail_filepath", m0."media_item_id", m0."inserted_at", m0."updated_at", m0."media_item_id" FROM "media_metadata" AS m0 WHERE (m0."media_item_id" = ?) [8380] 13:05:39.540 [debug] QUERY OK source="media_profiles" db=0.5ms idle=6.0ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:05:39.541 [debug] QUERY OK source="settings" db=0.4ms idle=5.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:05:39.541 [debug] QUERY OK source="settings" db=0.3ms idle=5.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:05:39.542 [debug] Running yt-dlp command for action: get_downloadable_status 13:05:39.544 [debug] QUERY OK source="settings" db=0.3ms idle=6.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:05:39.544 [debug] QUERY OK source="settings" db=0.2ms idle=4.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:05:39.544 [debug] QUERY OK source="settings" db=0.3ms idle=4.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:05:39.545 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=bhkmFO8DikY --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/a5/86/a586ccbcd2ef428e9161098b263e85d698b0cfc14753c30092f3ba733e7c856b.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 13:05:42.513 [info] {"source":"oban","duration":1665,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:05:45.008 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=bhkmFO8DikY --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/a5/86/a586ccbcd2ef428e9161098b263e85d698b0cfc14753c30092f3ba733e7c856b.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 1 with: ERROR: [youtube] bhkmFO8DikY: Sign in to confirm your age. This video may be inappropriate for some users. Use --cookies-from-browser or --cookies for the authentication. See https://github.com/yt-dlp/yt-dlp/wiki/FAQ#how-do-i-pass-cookies-to-yt-dlp for how to manually pass cookies. Also see https://github.com/yt-dlp/yt-dlp/wiki/Extractors#exporting-youtube-cookies for tips on effectively exporting YouTube cookies 13:05:45.009 [debug] QUERY OK source="settings" db=0.5ms idle=1227.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:05:45.010 [debug] QUERY OK source="settings" db=0.7ms idle=464.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:05:45.011 [debug] Running yt-dlp command for action: get_downloadable_status 13:05:45.014 [debug] QUERY OK source="settings" db=0.5ms idle=232.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:05:45.015 [debug] QUERY OK source="settings" db=0.4ms idle=233.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:05:45.016 [debug] QUERY OK source="settings" db=0.4ms idle=233.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:05:45.016 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=bhkmFO8DikY --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/ab/6c/ab6c5eb25a9866174f6b7564f76542764ec8bff9a22ad929dca58d15e8ced5d6.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 13:05:46.712 [info] GET /sources/14/media/13280 13:05:46.713 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "13280", "source_id" => "14"} Pipelines: [:browser] 13:05:46.714 [debug] QUERY OK source="media_items" db=0.4ms idle=1699.0ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [13280] 13:05:46.716 [debug] QUERY OK source="tasks" db=0.9ms queue=0.1ms idle=1699.5ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [13280] 13:05:46.716 [debug] QUERY OK source="sources" db=1.0ms idle=1699.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [14] 13:05:46.717 [debug] QUERY OK source="oban_jobs" db=0.4ms idle=1167.5ms SELECT o0."id", o0."state", o0."queue", o0."worker", o0."args", o0."meta", o0."tags", o0."errors", o0."attempt", o0."attempted_by", o0."max_attempts", o0."priority", o0."attempted_at", o0."cancelled_at", o0."completed_at", o0."discarded_at", o0."inserted_at", o0."scheduled_at", o0."id" FROM "oban_jobs" AS o0 WHERE (o0."id" = ?) [202071] 13:05:46.718 [debug] QUERY OK source="settings" db=0.3ms queue=0.1ms idle=163.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:05:46.719 [debug] QUERY OK source="settings" db=0.2ms idle=4.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:05:46.720 [debug] QUERY OK source="settings" db=0.3ms idle=3.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:05:46.722 [debug] QUERY OK source="media_profiles" db=0.3ms queue=0.1ms idle=5.9ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:05:46.728 [info] Sent 200 in 15ms 13:05:50.667 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=bhkmFO8DikY --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/ab/6c/ab6c5eb25a9866174f6b7564f76542764ec8bff9a22ad929dca58d15e8ced5d6.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 1 with: ERROR: [youtube] bhkmFO8DikY: Sign in to confirm your age. This video may be inappropriate for some users. Use --cookies-from-browser or --cookies for the authentication. See https://github.com/yt-dlp/yt-dlp/wiki/FAQ#how-do-i-pass-cookies-to-yt-dlp for how to manually pass cookies. Also see https://github.com/yt-dlp/yt-dlp/wiki/Extractors#exporting-youtube-cookies for tips on effectively exporting YouTube cookies 13:05:50.667 [error] yt-dlp download error for media item #8380: "ERROR: [youtube] bhkmFO8DikY: Sign in to confirm your age. This video may be inappropriate for some users. Use --cookies-from-browser or --cookies for the authentication. See https://github.com/yt-dlp/yt-dlp/wiki/FAQ#how-do-i-pass-cookies-to-yt-dlp for how to manually pass cookies. Also see https://github.com/yt-dlp/yt-dlp/wiki/Extractors#exporting-youtube-cookies for tips on effectively exporting YouTube cookies\n" 13:05:50.668 [error] yt-dlp download will not be retried: "ERROR: [youtube] bhkmFO8DikY: Sign in to confirm your age. This video may be inappropriate for some users. Use --cookies-from-browser or --cookies for the authentication. See https://github.com/yt-dlp/yt-dlp/wiki/FAQ#how-do-i-pass-cookies-to-yt-dlp for how to manually pass cookies. Also see https://github.com/yt-dlp/yt-dlp/wiki/Extractors#exporting-youtube-cookies for tips on effectively exporting YouTube cookies\n" 13:05:50.669 [info] {"args":{"id":8380},"id":202920,"meta":{},"state":"success","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":11135860,"event":"job:stop","queue_time":117530452,"attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 13:05:50.677 [info] {"args":{"id":8401},"id":202921,"meta":{},"system_time":1767405950677772538,"max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 13:05:50.679 [debug] QUERY OK source="media_items" db=0.9ms idle=896.0ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [8401] 13:05:50.679 [info] User scripts lifecyle file either not present or is empty. Skipping. 13:05:50.680 [debug] QUERY OK source="sources" db=0.7ms queue=0.1ms idle=897.6ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [7] 13:05:50.681 [debug] QUERY OK source="media_profiles" db=0.6ms idle=113.9ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:05:50.682 [debug] QUERY OK source="media_items" db=1.1ms idle=12.8ms SELECT 1 FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) LIMIT 1 [8401] 13:05:50.685 [debug] QUERY OK source="media_metadata" db=0.2ms idle=7.1ms SELECT m0."id", m0."metadata_filepath", m0."thumbnail_filepath", m0."media_item_id", m0."inserted_at", m0."updated_at", m0."media_item_id" FROM "media_metadata" AS m0 WHERE (m0."media_item_id" = ?) [8401] 13:05:50.685 [debug] QUERY OK source="media_profiles" db=0.3ms idle=6.1ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:05:50.686 [debug] QUERY OK source="settings" db=0.3ms idle=5.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:05:50.686 [debug] QUERY OK source="settings" db=0.3ms idle=5.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:05:50.687 [debug] Running yt-dlp command for action: get_downloadable_status 13:05:50.688 [debug] QUERY OK source="settings" db=0.3ms idle=5.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:05:50.689 [debug] QUERY OK source="settings" db=0.2ms idle=3.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:05:50.689 [debug] QUERY OK source="settings" db=0.3ms idle=3.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:05:50.689 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=ZWSj0M132e8 --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/83/9e/839e29a371487f195a4a9e4eb215927fc89e9dffd534edc029a37b612655a139.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 13:05:56.312 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=ZWSj0M132e8 --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/83/9e/839e29a371487f195a4a9e4eb215927fc89e9dffd534edc029a37b612655a139.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 1 with: ERROR: [youtube] ZWSj0M132e8: Sign in to confirm your age. This video may be inappropriate for some users. Use --cookies-from-browser or --cookies for the authentication. See https://github.com/yt-dlp/yt-dlp/wiki/FAQ#how-do-i-pass-cookies-to-yt-dlp for how to manually pass cookies. Also see https://github.com/yt-dlp/yt-dlp/wiki/Extractors#exporting-youtube-cookies for tips on effectively exporting YouTube cookies 13:05:56.313 [debug] QUERY OK source="settings" db=0.4ms queue=0.1ms idle=729.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:05:56.314 [debug] QUERY OK source="settings" db=0.3ms idle=532.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:05:56.315 [debug] Running yt-dlp command for action: get_downloadable_status 13:05:56.650 [debug] QUERY OK source="settings" db=0.5ms idle=867.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:05:56.651 [debug] QUERY OK source="settings" db=0.9ms idle=868.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:05:56.652 [debug] QUERY OK source="settings" db=0.5ms idle=338.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:05:56.653 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=ZWSj0M132e8 --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/e2/72/e272cc85035b731696395f8f35b62d022224ba2e6f8b048959847f69ada4b0e1.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 13:06:00.123 [info] {"source":"oban","duration":616,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 13:06:01.754 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=ZWSj0M132e8 --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/e2/72/e272cc85035b731696395f8f35b62d022224ba2e6f8b048959847f69ada4b0e1.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 1 with: ERROR: [youtube] ZWSj0M132e8: Sign in to confirm your age. This video may be inappropriate for some users. Use --cookies-from-browser or --cookies for the authentication. See https://github.com/yt-dlp/yt-dlp/wiki/FAQ#how-do-i-pass-cookies-to-yt-dlp for how to manually pass cookies. Also see https://github.com/yt-dlp/yt-dlp/wiki/Extractors#exporting-youtube-cookies for tips on effectively exporting YouTube cookies 13:06:01.754 [error] yt-dlp download error for media item #8401: "ERROR: [youtube] ZWSj0M132e8: Sign in to confirm your age. This video may be inappropriate for some users. Use --cookies-from-browser or --cookies for the authentication. See https://github.com/yt-dlp/yt-dlp/wiki/FAQ#how-do-i-pass-cookies-to-yt-dlp for how to manually pass cookies. Also see https://github.com/yt-dlp/yt-dlp/wiki/Extractors#exporting-youtube-cookies for tips on effectively exporting YouTube cookies\n" 13:06:01.754 [error] yt-dlp download will not be retried: "ERROR: [youtube] ZWSj0M132e8: Sign in to confirm your age. This video may be inappropriate for some users. Use --cookies-from-browser or --cookies for the authentication. See https://github.com/yt-dlp/yt-dlp/wiki/FAQ#how-do-i-pass-cookies-to-yt-dlp for how to manually pass cookies. Also see https://github.com/yt-dlp/yt-dlp/wiki/Extractors#exporting-youtube-cookies for tips on effectively exporting YouTube cookies\n" 13:06:01.755 [info] {"args":{"id":8401},"id":202921,"meta":{},"state":"success","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":11076610,"event":"job:stop","queue_time":128674775,"attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 13:06:01.762 [info] {"args":{"id":8418},"id":202922,"meta":{},"system_time":1767405961762080986,"max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 13:06:01.763 [debug] QUERY OK source="media_items" db=0.4ms idle=1638.9ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [8418] 13:06:01.763 [info] User scripts lifecyle file either not present or is empty. Skipping. 13:06:01.763 [debug] QUERY OK source="sources" db=0.3ms idle=1162.8ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [7] 13:06:01.764 [debug] QUERY OK source="media_profiles" db=0.3ms idle=159.3ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:06:01.765 [debug] QUERY OK source="media_items" db=0.4ms idle=9.9ms SELECT 1 FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) LIMIT 1 [8418] 13:06:01.766 [debug] QUERY OK source="media_metadata" db=0.2ms idle=4.4ms SELECT m0."id", m0."metadata_filepath", m0."thumbnail_filepath", m0."media_item_id", m0."inserted_at", m0."updated_at", m0."media_item_id" FROM "media_metadata" AS m0 WHERE (m0."media_item_id" = ?) [8418] 13:06:01.767 [debug] QUERY OK source="media_profiles" db=0.3ms idle=3.8ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:06:01.767 [debug] QUERY OK source="settings" db=0.2ms idle=3.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:06:01.768 [debug] QUERY OK source="settings" db=0.1ms idle=3.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:06:01.768 [debug] Running yt-dlp command for action: get_downloadable_status 13:06:01.770 [debug] QUERY OK source="settings" db=0.2ms idle=4.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:06:01.771 [debug] QUERY OK source="settings" db=0.2ms queue=0.1ms idle=4.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:06:01.771 [debug] QUERY OK source="settings" db=0.2ms queue=0.2ms idle=4.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:06:01.772 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=v6jHhzj08yQ --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/77/d0/77d0d9a0e9280cb9bf2c8f50aad0811fdeb14d5b60d457ff410dc20c11e509c9.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 13:06:03.621 [info] {"args":{"id":26},"id":202901,"meta":{},"system_time":1767405963621571465,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 13:06:03.622 [debug] QUERY OK source="sources" db=1.0ms idle=839.9ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [26] 13:06:03.623 [debug] QUERY OK source="settings" db=0.5ms idle=841.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:06:03.624 [debug] QUERY OK source="media_profiles" db=0.6ms idle=841.9ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:06:03.625 [debug] QUERY OK source="settings" db=0.5ms idle=11.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:06:03.625 [debug] Fetching recent media IDs from YouTube API for playlist: UU6NY7eg1FxCfAVX58yL0cJw 13:06:03.626 [debug] QUERY OK source="settings" db=0.4ms idle=4.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:06:03.626 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 13:06:04.151 [debug] QUERY OK source="media_items" db=7.1ms queue=0.1ms idle=520.7ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND m0."media_id" IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [26, "o2tiLxanOd0", "3Hkalon06bY", "acwCbVzHnRM", "m3Cddar422Y", "QItYx18RK4M", "iFrwlymvtTM", "CBKzBKWhNmE", "twi0ZP1ZWew", "MChkfGtdrgI", "usOf_0SOPl8", "7CamgxCV_lg", "CYW3qAtbiSg", "hkLPA0MEUFk", "Z9APq63an58", "MA2a2BtDQtE", "a23hasz0yk8", "o4tK4PhiK_c", "2-lUv1_A_KU", "W6GGXQ4xVdg", "TOIuoWmEqxo", "JRXSDo6asDk", "iAodr4mipf0", "12wArTNB9dk", "CFZ0TtEbofU", "RwW6yAVtf6Q", "9RshF2jpgLo", "MV8U7XQUpnY", "G0o-l5G0M4s", "FVOkr5w0O0I", "1IFJive9Bvc", "kuc2kAgYD8M", "jHOE86EMHvA", "CjuPAweX08c", "LH0RNHxukJs", "o6OxlF4vAuw", "Qxfr7h-PzdA", "xU_1w6OSnac", "-6G1TNBxp08", "o-ripoq_oXU", "Uevcwu2GLMs", "BAoXgNQ_wRI", "p4NWPk9B20I", "XKxqsR_4w_I", "BNtAWc-vLX4", "ktw-dS-26Gk", "Idbcu-oVtDs", "JCxqgAhaJj4", "A0vzWxUO5TA", "6M0wfDl0LEI", ...] 13:06:04.164 [debug] QUERY OK source="media_items" db=7.5ms idle=533.0ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [26] 13:06:04.169 [debug] QUERY OK source="tasks" db=0.8ms idle=542.1ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [202929, 26, ~U[2026-01-03 02:06:04Z], ~U[2026-01-03 02:06:04Z]] 13:06:04.170 [info] {"args":{"id":26},"id":202901,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":547610,"event":"job:stop","queue_time":423629,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 13:06:07.219 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=v6jHhzj08yQ --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/77/d0/77d0d9a0e9280cb9bf2c8f50aad0811fdeb14d5b60d457ff410dc20c11e509c9.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 1 with: ERROR: [youtube] v6jHhzj08yQ: Sign in to confirm your age. This video may be inappropriate for some users. Use --cookies-from-browser or --cookies for the authentication. See https://github.com/yt-dlp/yt-dlp/wiki/FAQ#how-do-i-pass-cookies-to-yt-dlp for how to manually pass cookies. Also see https://github.com/yt-dlp/yt-dlp/wiki/Extractors#exporting-youtube-cookies for tips on effectively exporting YouTube cookies 13:06:07.220 [debug] QUERY OK source="settings" db=0.8ms idle=1437.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:06:07.222 [debug] QUERY OK source="settings" db=1.0ms idle=1438.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:06:07.223 [debug] Running yt-dlp command for action: get_downloadable_status 13:06:07.224 [debug] QUERY OK source="settings" db=0.1ms idle=1442.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:06:07.224 [debug] QUERY OK source="settings" db=0.2ms idle=1442.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:06:07.225 [debug] QUERY OK source="settings" db=0.4ms idle=601.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:06:07.225 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=v6jHhzj08yQ --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/69/c0/69c03ad97506e9f11f2b475f6f2bdb3a70825cdc993baec450c8260b56fbc775.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 13:06:10.869 [info] GET /sources/23/media/21391 13:06:10.869 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "21391", "source_id" => "23"} Pipelines: [:browser] 13:06:10.870 [debug] QUERY OK source="media_items" db=1.1ms idle=228.3ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [21391] 13:06:10.872 [debug] QUERY OK source="tasks" db=1.0ms idle=89.3ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [21391] 13:06:10.872 [debug] QUERY OK source="sources" db=1.4ms idle=89.4ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [23] 13:06:10.873 [debug] QUERY OK source="settings" db=0.4ms idle=91.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:06:10.874 [debug] QUERY OK source="settings" db=0.6ms idle=91.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:06:10.875 [debug] QUERY OK source="settings" db=0.6ms idle=4.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:06:10.877 [debug] QUERY OK source="media_profiles" db=0.6ms idle=4.5ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:06:10.953 [info] Sent 200 in 84ms 13:06:12.518 [info] {"source":"oban","duration":4132,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:06:12.891 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=v6jHhzj08yQ --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/69/c0/69c03ad97506e9f11f2b475f6f2bdb3a70825cdc993baec450c8260b56fbc775.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 1 with: ERROR: [youtube] v6jHhzj08yQ: Sign in to confirm your age. This video may be inappropriate for some users. Use --cookies-from-browser or --cookies for the authentication. See https://github.com/yt-dlp/yt-dlp/wiki/FAQ#how-do-i-pass-cookies-to-yt-dlp for how to manually pass cookies. Also see https://github.com/yt-dlp/yt-dlp/wiki/Extractors#exporting-youtube-cookies for tips on effectively exporting YouTube cookies 13:06:12.891 [error] yt-dlp download error for media item #8418: "ERROR: [youtube] v6jHhzj08yQ: Sign in to confirm your age. This video may be inappropriate for some users. Use --cookies-from-browser or --cookies for the authentication. See https://github.com/yt-dlp/yt-dlp/wiki/FAQ#how-do-i-pass-cookies-to-yt-dlp for how to manually pass cookies. Also see https://github.com/yt-dlp/yt-dlp/wiki/Extractors#exporting-youtube-cookies for tips on effectively exporting YouTube cookies\n" 13:06:12.892 [error] yt-dlp download will not be retried: "ERROR: [youtube] v6jHhzj08yQ: Sign in to confirm your age. This video may be inappropriate for some users. Use --cookies-from-browser or --cookies for the authentication. See https://github.com/yt-dlp/yt-dlp/wiki/FAQ#how-do-i-pass-cookies-to-yt-dlp for how to manually pass cookies. Also see https://github.com/yt-dlp/yt-dlp/wiki/Extractors#exporting-youtube-cookies for tips on effectively exporting YouTube cookies\n" 13:06:12.895 [info] {"args":{"id":8418},"id":202922,"meta":{},"state":"success","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":11130511,"event":"job:stop","queue_time":139760707,"attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 13:06:12.902 [info] {"args":{"id":58546},"id":201954,"meta":{},"system_time":1767405972902335491,"max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","event":"job:start","attempt":3,"tags":["media_item","media_fetching","show_in_dashboard"]} 13:06:12.903 [debug] QUERY OK source="media_items" db=0.8ms idle=120.6ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [58546] 13:06:12.903 [info] User scripts lifecyle file either not present or is empty. Skipping. 13:06:12.904 [debug] QUERY OK source="sources" db=0.5ms idle=121.9ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [5] 13:06:12.905 [debug] QUERY OK source="media_profiles" db=0.6ms idle=122.8ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:06:12.906 [debug] QUERY OK source="media_items" db=0.8ms idle=10.9ms SELECT 1 FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) LIMIT 1 [58546] 13:06:12.908 [debug] QUERY OK source="media_metadata" db=0.2ms idle=6.2ms SELECT m0."id", m0."metadata_filepath", m0."thumbnail_filepath", m0."media_item_id", m0."inserted_at", m0."updated_at", m0."media_item_id" FROM "media_metadata" AS m0 WHERE (m0."media_item_id" = ?) [58546] 13:06:12.909 [debug] QUERY OK source="media_profiles" db=0.4ms queue=0.1ms idle=5.5ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:06:12.910 [debug] QUERY OK source="settings" db=0.3ms queue=0.1ms idle=5.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:06:12.911 [debug] QUERY OK source="settings" db=0.2ms idle=5.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:06:12.912 [debug] Running yt-dlp command for action: get_downloadable_status 13:06:12.913 [debug] QUERY OK source="settings" db=0.1ms idle=6.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:06:12.913 [debug] QUERY OK source="settings" db=0.2ms idle=4.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:06:12.914 [debug] QUERY OK source="settings" db=0.3ms idle=4.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:06:12.915 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=CcUb7Ky2oSI --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/77/54/77541e5e87a5c70ff076f238c11fb786fdedb8fc593b2fb4d3f9a4460728766a.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 13:06:19.960 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=CcUb7Ky2oSI --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/77/54/77541e5e87a5c70ff076f238c11fb786fdedb8fc593b2fb4d3f9a4460728766a.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 13:06:19.961 [debug] Running yt-dlp command for action: download 13:06:19.962 [debug] QUERY OK source="settings" db=0.7ms idle=1179.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:06:19.963 [debug] QUERY OK source="settings" db=0.5ms idle=1180.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:06:19.964 [debug] QUERY OK source="settings" db=0.5ms idle=1181.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:06:19.964 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=CcUb7Ky2oSI --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --embed-subs --sub-langs en --write-thumbnail --convert-thumbnail jpg --output thumbnail:/downloads/CodeSync/Season %(upload_date>%Y)S/s%(upload_date>%Y)Se%(upload_date>%m%d)S99 - %(title)S-thumb.%(ext)S --embed-thumbnail --convert-thumbnail jpg --write-info-json --clean-info-json --embed-metadata --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --sponsorblock-mark sponsor,intro,outro,selfpromo,preview,filler,interaction,music_offtopic --output /downloads/CodeSync/Season %(upload_date>%Y)S/s%(upload_date>%Y)Se%(upload_date>%m%d)S99 - %(title)S.%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/b2/45/b245a099d150e58bc2d040563de86ec137583d4c4fb549769763d5ffdfef0c6a.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 13:06:28.541 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=CcUb7Ky2oSI --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --embed-subs --sub-langs en --write-thumbnail --convert-thumbnail jpg --output thumbnail:/downloads/CodeSync/Season %(upload_date>%Y)S/s%(upload_date>%Y)Se%(upload_date>%m%d)S99 - %(title)S-thumb.%(ext)S --embed-thumbnail --convert-thumbnail jpg --write-info-json --clean-info-json --embed-metadata --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --sponsorblock-mark sponsor,intro,outro,selfpromo,preview,filler,interaction,music_offtopic --output /downloads/CodeSync/Season %(upload_date>%Y)S/s%(upload_date>%Y)Se%(upload_date>%m%d)S99 - %(title)S.%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/b2/45/b245a099d150e58bc2d040563de86ec137583d4c4fb549769763d5ffdfef0c6a.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 1 with: WARNING: The extractor specified to use impersonation for this download, but no impersonate target is available. If you encounter errors, then see https://github.com/yt-dlp/yt-dlp#impersonation for information on installing the required dependencies ERROR: Unable to download video subtitles for 'en': HTTP Error 429: Too Many Requests 13:06:28.541 [error] yt-dlp download error for media item #58546: "WARNING: The extractor specified to use impersonation for this download, but no impersonate target is available. If you encounter errors, then see https://github.com/yt-dlp/yt-dlp#impersonation for information on installing the required dependencies\nERROR: Unable to download video subtitles for 'en': HTTP Error 429: Too Many Requests\n" 13:06:28.543 [info] {"error":"** (Oban.PerformError) Pinchflat.Downloading.MediaDownloadWorker failed with {:error, :download_failed}","args":{"id":58546},"id":201954,"meta":{},"state":"failure","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":15639810,"event":"job:exception","queue_time":320544466,"attempt":3,"tags":["media_item","media_fetching","show_in_dashboard"]} 13:06:31.713 [info] {"args":{"id":10},"id":202902,"meta":{},"system_time":1767405991713672777,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 13:06:31.714 [debug] QUERY OK source="sources" db=0.3ms idle=1931.9ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [10] 13:06:31.715 [debug] QUERY OK source="settings" db=0.4ms idle=1932.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:06:31.716 [debug] QUERY OK source="media_profiles" db=0.4ms idle=1014.2ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:06:31.716 [debug] QUERY OK source="settings" db=0.3ms idle=10.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:06:31.716 [debug] Fetching recent media IDs from YouTube API for playlist: UUmHz7DQbbkcY_UoWY8bBJLw 13:06:31.717 [debug] QUERY OK source="settings" db=0.1ms idle=3.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:06:31.717 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 13:06:32.098 [debug] QUERY OK source="media_items" db=1.8ms idle=382.2ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND m0."media_id" IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [10, "PhjtM9ePmYY", "BYRqpIciNLg", "KKoDQ42Fcpk", "AifAIqHezb8", "sjsS60OTXSQ", "KVouvdlUtGQ", "Th4RJNVZN3Q", "a9Zj-iWYC4w", "Z2_oFD9DMd0", "OW9WywZF_d4", "hFSwWzxrqUA", "XsPrNwyLDJM", "9NUcKPnPMEw", "GvP1jo9RstE", "8jul3DEwgMY", "e4K0Co-JeKQ", "wxoYf3KBlis", "YFQm8Hk73ug", "iu5rnQkfO6M", "RESslu3Bhuk", "vn9VDbacUgQ", "mLozqDnhqpQ", "GWXCCBsOMSg", "OXIpbrvFxfE", "hbZb1Q0mM7k", "lj2JTO1L1Tc", "dGjMw1SkmjU", "vBQFfmlTK_4", "91WqepC8kS0", "UUZfxQhKmfA", "aPsq5nqvhxg", "AJ7atBkisOU", "2fZ0nkP5dfo", "qKZXQGCLRJY", "F26dxTMmW10", "cYPuhhATDXc", "uLrOyIpjkZ8", "kDu56nXRqGQ", "I4lBTlClwww", "h23xksD0dN0", "SgameZUfeGo", "NPgbgiRJCxA", "-v88e4T8i_E", "HkgV_-nJOuE", "3h1vM0lIrpM", "gjExqY_iB38", "5ScP_aPBEiQ", "t5CkW-CKTZs", "gKKRYcy4BbU", ...] 13:06:32.102 [debug] QUERY OK source="settings" db=0.2ms queue=0.1ms idle=386.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:06:32.103 [debug] QUERY OK source="settings" db=0.3ms queue=0.1ms idle=386.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:06:32.103 [debug] Running yt-dlp command for action: get_media_attributes 13:06:32.105 [debug] QUERY OK source="settings" db=0.1ms idle=388.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:06:32.105 [debug] QUERY OK source="settings" db=0.1ms idle=387.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:06:32.105 [debug] QUERY OK source="settings" db=0.2ms idle=6.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:06:32.106 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=Z2_oFD9DMd0 --simulate --skip-download --output /downloads/Switch Angel/Season %(upload_date>%Y)S/s%(upload_date>%Y)Se%(upload_date>%m%d)S00 - %(title)S.%(ext)S --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --print-to-file %(.{id,title,live_status,original_url,description,aspect_ratio,duration,upload_date,timestamp,playlist_index,filename})j /tmp/pinchflat/data/ca/b5/cab54d96cd262aec144088931b3afd133cf61843ed4573cf24df2ba310892177.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 13:06:33.681 [info] GET /sources/22/media/21298/force_download 13:06:33.682 [debug] QUERY OK source="settings" db=0.6ms idle=1578.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:06:33.683 [debug] QUERY OK source="settings" db=0.9ms queue=0.1ms idle=1577.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:06:33.684 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 13:06:33.685 [error] #PID<0.9475.0> running PinchflatWeb.Endpoint (connection #PID<0.9474.0>, stream id 1) terminated Server: pinchflat.uiau7e.uncld.dev:80 (http) Request: GET /sources/22/media/21298/force_download ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/22/media/21298/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.9474.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/22/media/21298/force_download", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 58394}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYdFBWc0NmZG9KN3FiSnFuaHZtc2hUWlJl.msdIN7FvRF5ovFv1UUTBLNy4ec4PQE8xBajY7lzFpYA", "from" => "gptbot(at)openai.com", "host" => "pinchflat.uiau7e.uncld.dev", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.3; +https://openai.com/gptbot)", "via" => "2.0 Caddy", "x-forwarded-for" => "74.7.227.183", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https", "x-openai-host-hash" => "454925582" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{ "_pinchflat_key" => "SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYdFBWc0NmZG9KN3FiSnFuaHZtc2hUWlJl.msdIN7FvRF5ovFv1UUTBLNy4ec4PQE8xBajY7lzFpYA" }, halted: false, host: "pinchflat.uiau7e.uncld.dev", method: "GET", owner: #PID<0.9475.0>, params: %{}, path_info: ["sources", "22", "media", "21298", "force_download"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.uiau7e.uncld.dev", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {10, 210, 0, 2}, req_cookies: %{ "_pinchflat_key" => "SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYdFBWc0NmZG9KN3FiSnFuaHZtc2hUWlJl.msdIN7FvRF5ovFv1UUTBLNy4ec4PQE8xBajY7lzFpYA" }, req_headers: [ {"accept", "*/*"}, {"accept-encoding", "gzip, br, deflate"}, {"cookie", "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYdFBWc0NmZG9KN3FiSnFuaHZtc2hUWlJl.msdIN7FvRF5ovFv1UUTBLNy4ec4PQE8xBajY7lzFpYA"}, {"from", "gptbot(at)openai.com"}, {"host", "pinchflat.uiau7e.uncld.dev"}, {"user-agent", "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.3; +https://openai.com/gptbot)"}, {"via", "2.0 Caddy"}, {"x-forwarded-for", "74.7.227.183"}, {"x-forwarded-host", "pinchflat.uiau7e.uncld.dev"}, {"x-forwarded-proto", "https"}, {"x-openai-host-hash", "454925582"} ], request_path: "/sources/22/media/21298/force_download", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GIcWYxtDgB6D_b8AAHRj"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.9474.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/22/media/21298/force_download", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 58394}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYdFBWc0NmZG9KN3FiSnFuaHZtc2hUWlJl.msdIN7FvRF5ovFv1UUTBLNy4ec4PQE8xBajY7lzFpYA", "from" => "gptbot(at)openai.com", "host" => "pinchflat.uiau7e.uncld.dev", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.3; +https://openai.com/gptbot)", "via" => "2.0 Caddy", "x-forwarded-for" => "74.7.227.183", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https", "x-openai-host-hash" => "454925582" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/22/media/21298/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.9474.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/22/media/21298/force_download", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 58394}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYdFBWc0NmZG9KN3FiSnFuaHZtc2hUWlJl.msdIN7FvRF5ovFv1UUTBLNy4ec4PQE8xBajY7lzFpYA", "from" => "gptbot(at)openai.com", "host" => "pinchflat.uiau7e.uncld.dev", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.3; +https://openai.com/gptbot)", "via" => "2.0 Caddy", "x-forwarded-for" => "74.7.227.183", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https", "x-openai-host-hash" => "454925582" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{ "_pinch (truncated) 13:06:36.754 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=Z2_oFD9DMd0 --simulate --skip-download --output /downloads/Switch Angel/Season %(upload_date>%Y)S/s%(upload_date>%Y)Se%(upload_date>%m%d)S00 - %(title)S.%(ext)S --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --print-to-file %(.{id,title,live_status,original_url,description,aspect_ratio,duration,upload_date,timestamp,playlist_index,filename})j /tmp/pinchflat/data/ca/b5/cab54d96cd262aec144088931b3afd133cf61843ed4573cf24df2ba310892177.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 1 with: ERROR: [youtube] Z2_oFD9DMd0: This live event will begin in a few moments. 13:06:36.755 [error] Error creating media item 'Z2_oFD9DMd0' from URL: {:error, "ERROR: [youtube] Z2_oFD9DMd0: This live event will begin in a few moments.\n", 1} 13:06:36.757 [debug] QUERY OK source="media_items" db=2.3ms idle=1973.3ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [10] 13:06:36.762 [debug] QUERY OK source="tasks" db=0.9ms idle=979.4ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [202930, 10, ~U[2026-01-03 02:06:36Z], ~U[2026-01-03 02:06:36Z]] 13:06:36.763 [info] {"args":{"id":10},"id":202902,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":5048710,"event":"job:stop","queue_time":89606,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 13:06:37.729 [info] {"args":{"id":6},"id":202903,"meta":{},"system_time":1767405997729013804,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 13:06:37.729 [debug] QUERY OK source="sources" db=0.3ms idle=967.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [6] 13:06:37.730 [debug] QUERY OK source="settings" db=0.2ms idle=966.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:06:37.730 [debug] QUERY OK source="media_profiles" db=0.2ms idle=958.3ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:06:37.730 [debug] QUERY OK source="settings" db=0.2ms idle=8.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:06:37.731 [debug] Fetching recent media IDs from YouTube API for playlist: UUg0m_Ah8P_MQbnn77-vYnYw 13:06:37.731 [debug] QUERY OK source="settings" db=0.1ms idle=2.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:06:37.731 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 13:06:38.264 [debug] QUERY OK source="media_items" db=4.0ms idle=530.7ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND m0."media_id" IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [6, "9i6Qm3LV89c", "2PC3HH4izX4", "dJLpdoPNdZ8", "lqRHAbkn9bo", "nlYgNjtr904", "uHKLZ8LcCJA", "V3LW3EWUxqE", "XaTvV6zJEXk", "AjnHxtnxMhk", "vuJTLm11QmQ", "vUzRuvCi6lw", "NlxSd2y_gfI", "ivcFXtMGdE8", "m17ugzx_Ab4", "o5QiLKbHeMI", "moqdU9sMrRk", "Yi55tGTEMqQ", "rHliVvnQ5Pg", "nCZSTFM-v9k", "uasm2RENDH4", "musiLNtEyRY", "uSvqlME0IsI", "Yo0hmtg8LNc", "HOFD3h9Up9w", "uibJMXaSB7c", "NGq1EoY_r2I", "IL-UZlbO3zI", "-_txeeBP6dg", "iH7BiZvsczM", "rIKuiZVHfZo", "HRw20b6hb_s", "xOQPha-de4A", "L6IXwj-_X1k", "_7--BDD2pxk", "Xaq53-12iW8", "bfb-ZBwdvpo", "3DLbHio3ivA", "xhpwyar65ms", "UzEr8RISXds", "tHU6PeO4WDs", "2z1AaBGzA1g", "y-t3hyj7Mz8", "5ZUXEQ6d0dM", "pn8GF5HaKZc", "wH3XASrC2DA", "C_oeOAG0G5E", "c8gYHg1lZCg", "cPEXUpZ6CWk", "jST7T0L_k_w", ...] 13:06:38.268 [debug] QUERY OK source="media_items" db=1.6ms idle=536.1ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [6] 13:06:38.271 [debug] QUERY OK source="tasks" db=0.3ms idle=539.9ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [202931, 6, ~U[2026-01-03 02:06:38Z], ~U[2026-01-03 02:06:38Z]] 13:06:38.272 [info] {"args":{"id":6},"id":202903,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":542840,"event":"job:stop","queue_time":599794,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 13:06:42.520 [info] {"source":"oban","duration":1373,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:06:51.763 [info] {"args":{"id":58546},"id":201954,"meta":{},"system_time":1767406011763450271,"max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","event":"job:start","attempt":4,"tags":["media_item","media_fetching","show_in_dashboard"]} 13:06:51.765 [debug] QUERY OK source="media_items" db=0.4ms queue=0.2ms idle=1982.2ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [58546] 13:06:51.765 [info] User scripts lifecyle file either not present or is empty. Skipping. 13:06:51.767 [debug] QUERY OK source="sources" db=0.5ms queue=0.3ms idle=1984.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [5] 13:06:51.768 [debug] QUERY OK source="media_profiles" db=0.5ms queue=0.2ms idle=1014.6ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:06:51.770 [debug] QUERY OK source="media_items" db=0.5ms queue=0.3ms idle=13.7ms SELECT 1 FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) LIMIT 1 [58546] 13:06:51.772 [debug] QUERY OK source="media_metadata" db=0.2ms idle=9.0ms SELECT m0."id", m0."metadata_filepath", m0."thumbnail_filepath", m0."media_item_id", m0."inserted_at", m0."updated_at", m0."media_item_id" FROM "media_metadata" AS m0 WHERE (m0."media_item_id" = ?) [58546] 13:06:51.774 [debug] QUERY OK source="media_profiles" db=0.8ms queue=0.3ms idle=7.9ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:06:51.776 [debug] QUERY OK source="settings" db=0.3ms queue=0.1ms idle=8.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:06:51.777 [debug] QUERY OK source="settings" db=0.5ms queue=0.1ms idle=7.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:06:51.778 [debug] Running yt-dlp command for action: get_downloadable_status 13:06:51.780 [debug] QUERY OK source="settings" db=0.5ms idle=9.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:06:51.781 [debug] QUERY OK source="settings" db=0.5ms queue=0.1ms idle=8.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:06:51.782 [debug] QUERY OK source="settings" db=0.3ms idle=7.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:06:51.782 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=CcUb7Ky2oSI --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/71/65/7165219725423abca86f9bb18707d8fe42b1c675ed3836171aaccadaedf2b693.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 13:06:54.196 [info] GET /sources/11/media/58554/force_download 13:06:54.197 [debug] QUERY OK source="settings" db=0.2ms queue=0.6ms idle=1415.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:06:54.199 [debug] QUERY OK source="settings" db=0.6ms queue=0.1ms idle=1416.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:06:54.199 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 13:06:54.200 [error] #PID<0.9484.0> running PinchflatWeb.Endpoint (connection #PID<0.9483.0>, stream id 1) terminated Server: pinchflat.uiau7e.uncld.dev:80 (http) Request: GET /sources/11/media/58554/force_download ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/11/media/58554/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.9483.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/11/media/58554/force_download", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 53810}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYdFBWc0NmZG9KN3FiSnFuaHZtc2hUWlJl.msdIN7FvRF5ovFv1UUTBLNy4ec4PQE8xBajY7lzFpYA", "from" => "gptbot(at)openai.com", "host" => "pinchflat.uiau7e.uncld.dev", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.3; +https://openai.com/gptbot)", "via" => "2.0 Caddy", "x-forwarded-for" => "74.7.227.183", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https", "x-openai-host-hash" => "454925582" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{ "_pinchflat_key" => "SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYdFBWc0NmZG9KN3FiSnFuaHZtc2hUWlJl.msdIN7FvRF5ovFv1UUTBLNy4ec4PQE8xBajY7lzFpYA" }, halted: false, host: "pinchflat.uiau7e.uncld.dev", method: "GET", owner: #PID<0.9484.0>, params: %{}, path_info: ["sources", "11", "media", "58554", "force_download"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.uiau7e.uncld.dev", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {10, 210, 0, 2}, req_cookies: %{ "_pinchflat_key" => "SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYdFBWc0NmZG9KN3FiSnFuaHZtc2hUWlJl.msdIN7FvRF5ovFv1UUTBLNy4ec4PQE8xBajY7lzFpYA" }, req_headers: [ {"accept", "*/*"}, {"accept-encoding", "gzip, br, deflate"}, {"cookie", "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYdFBWc0NmZG9KN3FiSnFuaHZtc2hUWlJl.msdIN7FvRF5ovFv1UUTBLNy4ec4PQE8xBajY7lzFpYA"}, {"from", "gptbot(at)openai.com"}, {"host", "pinchflat.uiau7e.uncld.dev"}, {"user-agent", "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.3; +https://openai.com/gptbot)"}, {"via", "2.0 Caddy"}, {"x-forwarded-for", "74.7.227.183"}, {"x-forwarded-host", "pinchflat.uiau7e.uncld.dev"}, {"x-forwarded-proto", "https"}, {"x-openai-host-hash", "454925582"} ], request_path: "/sources/11/media/58554/force_download", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GIcWZ-ITF56zCCcAAHUj"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.9483.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/11/media/58554/force_download", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 53810}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYdFBWc0NmZG9KN3FiSnFuaHZtc2hUWlJl.msdIN7FvRF5ovFv1UUTBLNy4ec4PQE8xBajY7lzFpYA", "from" => "gptbot(at)openai.com", "host" => "pinchflat.uiau7e.uncld.dev", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.3; +https://openai.com/gptbot)", "via" => "2.0 Caddy", "x-forwarded-for" => "74.7.227.183", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https", "x-openai-host-hash" => "454925582" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/11/media/58554/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.9483.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/11/media/58554/force_download", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 53810}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYdFBWc0NmZG9KN3FiSnFuaHZtc2hUWlJl.msdIN7FvRF5ovFv1UUTBLNy4ec4PQE8xBajY7lzFpYA", "from" => "gptbot(at)openai.com", "host" => "pinchflat.uiau7e.uncld.dev", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.3; +https://openai.com/gptbot)", "via" => "2.0 Caddy", "x-forwarded-for" => "74.7.227.183", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https", "x-openai-host-hash" => "454925582" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{ "_pinch (truncated) 13:06:59.093 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=CcUb7Ky2oSI --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/71/65/7165219725423abca86f9bb18707d8fe42b1c675ed3836171aaccadaedf2b693.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: WARNING: [youtube] CcUb7Ky2oSI: Some tv client https formats have been skipped as they are missing a url. YouTube may have enabled the SABR-only or Server-Side Ad Placement experiment for the current session. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details WARNING: [youtube] CcUb7Ky2oSI: Some web client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details 13:06:59.094 [debug] Running yt-dlp command for action: download 13:06:59.095 [debug] QUERY OK source="settings" db=0.5ms idle=1312.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:06:59.095 [debug] QUERY OK source="settings" db=0.4ms idle=1313.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:06:59.096 [debug] QUERY OK source="settings" db=0.4ms idle=1314.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:06:59.097 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=CcUb7Ky2oSI --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --embed-subs --sub-langs en --write-thumbnail --convert-thumbnail jpg --output thumbnail:/downloads/CodeSync/Season %(upload_date>%Y)S/s%(upload_date>%Y)Se%(upload_date>%m%d)S99 - %(title)S-thumb.%(ext)S --embed-thumbnail --convert-thumbnail jpg --write-info-json --clean-info-json --embed-metadata --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --sponsorblock-mark sponsor,intro,outro,selfpromo,preview,filler,interaction,music_offtopic --output /downloads/CodeSync/Season %(upload_date>%Y)S/s%(upload_date>%Y)Se%(upload_date>%m%d)S99 - %(title)S.%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/29/77/2977ff9ec49ecac931a3e4adc756def9b6bf0c2e905324ea852f877517305dd8.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 13:07:00.125 [info] {"source":"oban","duration":548,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 13:07:01.792 [info] {"args":{"id":9},"id":202904,"meta":{},"system_time":1767406021791859111,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 13:07:01.793 [debug] QUERY OK source="sources" db=0.5ms idle=1009.7ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [9] 13:07:01.794 [debug] QUERY OK source="settings" db=0.8ms idle=10.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:07:01.795 [debug] QUERY OK source="media_profiles" db=0.4ms queue=0.1ms idle=11.9ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:07:01.796 [debug] QUERY OK source="settings" db=0.2ms queue=0.1ms idle=11.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:07:01.796 [debug] Fetching recent media IDs from YouTube API for playlist: UUy0Pr5u-MwGXXzp_GDd4m_g 13:07:01.797 [debug] QUERY OK source="settings" db=0.3ms idle=5.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:07:01.797 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 13:07:02.250 [debug] QUERY OK source="media_items" db=2.8ms idle=453.6ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND m0."media_id" IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [9, "97DBlIPSMkI", "V7Q9VnfzRqE", "Nub2m3iioSw", "Tpk6NNZubqU", "L4Eh-MtBFFk", "sa8p75KJqOc", "2gpPC0vsry0", "B2l4YfAav6M", "iL1qKxcaZnU", "NH5AAcLn03o", "8fOaCUvVQpY", "8aQ7sJ9EyaY", "ld0ngHU3YQ0", "uKzsA5kc8jw", "_A1dxw_T6dw", "TFVA0Bc5ajA", "IgFSOa0RBxs", "fGAe2cenBhs", "a6_0p8e42Y4", "vnR7jnJYN-k", "db6_ragog48", "SMKDYoXrZzw", "-fM_uGwlRlU", "kRxJ2g3T0zs", "GgU7L-z0kbA", "yFZJ6Qb8mDY", "YkyTbtgcfJU", "k01ARI01oMU", "ToFKhGfGgc0", "MU8JlJIuwh4", "IY36QIh6VG8", "brtcZFHW0P4", "A39Glu9I9fk", "Ib_1jixUkLw", "c9UIDwF7oS4", "CcSE-YHRJP4", "Tpmb_mTKuhs", "yNbz6f5dMLE", "BAVQcOWZi-Y", "Fa7RxeYNUTw", "teIoBQdGT5s", "UqykI_3CT-g", "vBeWkDTK6Eg", "qOp_nyKqmic", "fEqSlPpXHYk", "lII4lxNpPVg", "BaxD8BI3wI4", "me_afppRbyI", "C69B2k3fAvs", ...] 13:07:02.257 [debug] QUERY OK source="media_items" db=3.1ms idle=459.4ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [9] 13:07:02.260 [debug] QUERY OK source="tasks" db=0.3ms idle=462.9ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [202932, 9, ~U[2026-01-03 02:07:02Z], ~U[2026-01-03 02:07:02Z]] 13:07:02.261 [info] {"args":{"id":9},"id":202904,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":469029,"event":"job:stop","queue_time":491587,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 13:07:07.798 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=CcUb7Ky2oSI --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --embed-subs --sub-langs en --write-thumbnail --convert-thumbnail jpg --output thumbnail:/downloads/CodeSync/Season %(upload_date>%Y)S/s%(upload_date>%Y)Se%(upload_date>%m%d)S99 - %(title)S-thumb.%(ext)S --embed-thumbnail --convert-thumbnail jpg --write-info-json --clean-info-json --embed-metadata --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --sponsorblock-mark sponsor,intro,outro,selfpromo,preview,filler,interaction,music_offtopic --output /downloads/CodeSync/Season %(upload_date>%Y)S/s%(upload_date>%Y)Se%(upload_date>%m%d)S99 - %(title)S.%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/29/77/2977ff9ec49ecac931a3e4adc756def9b6bf0c2e905324ea852f877517305dd8.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 1 with: WARNING: The extractor specified to use impersonation for this download, but no impersonate target is available. If you encounter errors, then see https://github.com/yt-dlp/yt-dlp#impersonation for information on installing the required dependencies ERROR: Unable to download video subtitles for 'en': HTTP Error 429: Too Many Requests 13:07:07.799 [error] yt-dlp download error for media item #58546: "WARNING: The extractor specified to use impersonation for this download, but no impersonate target is available. If you encounter errors, then see https://github.com/yt-dlp/yt-dlp#impersonation for information on installing the required dependencies\nERROR: Unable to download video subtitles for 'en': HTTP Error 429: Too Many Requests\n" 13:07:07.801 [info] {"error":"** (Oban.PerformError) Pinchflat.Downloading.MediaDownloadWorker failed with {:error, :download_failed}","args":{"id":58546},"id":201954,"meta":{},"state":"failure","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":16035880,"event":"job:exception","queue_time":218754,"attempt":4,"tags":["media_item","media_fetching","show_in_dashboard"]} 13:07:12.523 [info] {"source":"oban","duration":2699,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:07:18.839 [info] {"args":{"id":11},"id":202905,"meta":{},"system_time":1767406038839143189,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 13:07:18.840 [debug] QUERY OK source="sources" db=0.4ms idle=1056.4ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [11] 13:07:18.841 [debug] QUERY OK source="settings" db=0.7ms idle=1057.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:07:18.842 [debug] QUERY OK source="media_profiles" db=0.7ms idle=1010.8ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:07:18.843 [debug] QUERY OK source="settings" db=1.2ms idle=9.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:07:18.843 [debug] Fetching recent media IDs from YouTube API for playlist: UUJ901NqoRaXMnIm7aOjLyuA 13:07:18.844 [debug] QUERY OK source="settings" db=0.5ms idle=4.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:07:18.844 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 13:07:19.283 [debug] QUERY OK source="media_items" db=5.8ms idle=436.7ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND m0."media_id" IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [11, "1ji7g8qZJ_4", "xP5WmZg7OMg", "HBoV87Jndh8", "-zpzRklxMEo", "9AX85j6Lp4M", "p2U9d4FWDaI", "hfT6XVSa2xE", "qBOKYwe8NzA", "Cf5jL5JNq7k", "bAV0y2acB9c", "XE6JvrChQ_Q", "Efv456Ks9ms", "qgiJ4C5s46U", "KaVC_mTFqHk", "M6gat-hai0I", "_xwFJzOtQv0", "Ao-M_YvfhXY", "SKHWQwf0ago", "gmuFtWZG3v8", "H4oeJ87TMt4", "rS2fDo6mhS8", "aOF6Pe_bTeI", "x8B3Z91qkoE", "fVvYTWAHoBQ", "8r6xqWTqcPQ", "k677A--BwGE", "CSTtrz8t1eg", "w6Ej3Iim4Ic", "jO8S8_KX6p0", "tslsVdOjWFM", "dckL2BCDYmQ", "E3N8_pRRtGM", "qeOEDUgy5xA", "MIPvNqPwMxc", "V2GelRPp5fg", "jWH5H6Y6T-A", "1ObIAwtqt9k", "yVdv1xVggZ4", "Pxpz4211gMI", "UEUAHI0AZu4", "gitCR-iTofw", "eTg2rHYqUZc", "QnOIm4U7Dzs", "RYNFRbP4OWQ", "R3kNCz120XM", "vMflt2fJZYw", "4DkhBa_L_4E", "4IqFTPw6Mzk", "AepfCktyPLk", ...] 13:07:19.291 [debug] QUERY OK source="media_items" db=4.2ms queue=0.1ms idle=446.3ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [11] 13:07:19.299 [debug] QUERY OK source="tasks" db=1.1ms idle=16.0ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [202933, 11, ~U[2026-01-03 02:07:19Z], ~U[2026-01-03 02:07:19Z]] 13:07:19.302 [info] {"args":{"id":11},"id":202905,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":460912,"event":"job:stop","queue_time":400482,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 13:07:39.892 [info] {"args":{"id":58546},"id":201954,"meta":{},"system_time":1767406059892392136,"max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","event":"job:start","attempt":5,"tags":["media_item","media_fetching","show_in_dashboard"]} 13:07:39.893 [debug] QUERY OK source="media_items" db=0.6ms idle=1109.6ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [58546] 13:07:39.893 [info] User scripts lifecyle file either not present or is empty. Skipping. 13:07:39.895 [debug] QUERY OK source="sources" db=1.2ms idle=1110.9ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [5] 13:07:39.896 [debug] QUERY OK source="media_profiles" db=0.9ms idle=1012.4ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:07:39.898 [debug] QUERY OK source="media_items" db=0.5ms queue=0.3ms idle=12.4ms SELECT 1 FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) LIMIT 1 [58546] 13:07:39.900 [debug] QUERY OK source="media_metadata" db=0.1ms idle=8.2ms SELECT m0."id", m0."metadata_filepath", m0."thumbnail_filepath", m0."media_item_id", m0."inserted_at", m0."updated_at", m0."media_item_id" FROM "media_metadata" AS m0 WHERE (m0."media_item_id" = ?) [58546] 13:07:39.901 [debug] QUERY OK source="media_profiles" db=0.2ms queue=0.1ms idle=7.5ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:07:39.902 [debug] QUERY OK source="settings" db=0.1ms idle=6.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:07:39.902 [debug] QUERY OK source="settings" db=0.1ms idle=5.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:07:39.903 [debug] Running yt-dlp command for action: get_downloadable_status 13:07:39.905 [debug] QUERY OK source="settings" db=0.3ms idle=6.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:07:39.906 [debug] QUERY OK source="settings" db=0.2ms idle=5.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:07:39.906 [debug] QUERY OK source="settings" db=0.2ms queue=0.1ms idle=5.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:07:39.907 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=CcUb7Ky2oSI --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/b5/4a/b54a2a42ddfabc7ba991bd29ad5368ef6485ad08367990b836d81d5340484102.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 13:07:42.526 [info] {"source":"oban","duration":2539,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:07:46.954 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=CcUb7Ky2oSI --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/b5/4a/b54a2a42ddfabc7ba991bd29ad5368ef6485ad08367990b836d81d5340484102.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 13:07:46.954 [debug] Running yt-dlp command for action: download 13:07:46.955 [debug] QUERY OK source="settings" db=0.7ms queue=0.1ms idle=1171.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:07:46.956 [debug] QUERY OK source="settings" db=0.6ms idle=1172.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:07:46.957 [debug] QUERY OK source="settings" db=0.5ms idle=1173.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:07:46.959 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=CcUb7Ky2oSI --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --embed-subs --sub-langs en --write-thumbnail --convert-thumbnail jpg --output thumbnail:/downloads/CodeSync/Season %(upload_date>%Y)S/s%(upload_date>%Y)Se%(upload_date>%m%d)S99 - %(title)S-thumb.%(ext)S --embed-thumbnail --convert-thumbnail jpg --write-info-json --clean-info-json --embed-metadata --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --sponsorblock-mark sponsor,intro,outro,selfpromo,preview,filler,interaction,music_offtopic --output /downloads/CodeSync/Season %(upload_date>%Y)S/s%(upload_date>%Y)Se%(upload_date>%m%d)S99 - %(title)S.%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/88/b5/88b56f80e7e877855ffc1a1f0493f8f6dfc1ab542c73389b6ee0d942e9c774ec.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 13:07:53.415 [info] GET /sources/22/media/21290/force_download 13:07:53.415 [debug] QUERY OK source="settings" db=0.2ms idle=1494.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:07:53.416 [debug] QUERY OK source="settings" db=0.4ms idle=633.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:07:53.416 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 13:07:53.417 [error] #PID<0.9501.0> running PinchflatWeb.Endpoint (connection #PID<0.9500.0>, stream id 1) terminated Server: pinchflat.uiau7e.uncld.dev:80 (http) Request: GET /sources/22/media/21290/force_download ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/22/media/21290/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.9500.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/22/media/21290/force_download", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 56814}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYdFBWc0NmZG9KN3FiSnFuaHZtc2hUWlJl.msdIN7FvRF5ovFv1UUTBLNy4ec4PQE8xBajY7lzFpYA", "from" => "gptbot(at)openai.com", "host" => "pinchflat.uiau7e.uncld.dev", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.3; +https://openai.com/gptbot)", "via" => "2.0 Caddy", "x-forwarded-for" => "74.7.227.183", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https", "x-openai-host-hash" => "454925582" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{ "_pinchflat_key" => "SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYdFBWc0NmZG9KN3FiSnFuaHZtc2hUWlJl.msdIN7FvRF5ovFv1UUTBLNy4ec4PQE8xBajY7lzFpYA" }, halted: false, host: "pinchflat.uiau7e.uncld.dev", method: "GET", owner: #PID<0.9501.0>, params: %{}, path_info: ["sources", "22", "media", "21290", "force_download"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.uiau7e.uncld.dev", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {10, 210, 0, 2}, req_cookies: %{ "_pinchflat_key" => "SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYdFBWc0NmZG9KN3FiSnFuaHZtc2hUWlJl.msdIN7FvRF5ovFv1UUTBLNy4ec4PQE8xBajY7lzFpYA" }, req_headers: [ {"accept", "*/*"}, {"accept-encoding", "gzip, br, deflate"}, {"cookie", "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYdFBWc0NmZG9KN3FiSnFuaHZtc2hUWlJl.msdIN7FvRF5ovFv1UUTBLNy4ec4PQE8xBajY7lzFpYA"}, {"from", "gptbot(at)openai.com"}, {"host", "pinchflat.uiau7e.uncld.dev"}, {"user-agent", "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.3; +https://openai.com/gptbot)"}, {"via", "2.0 Caddy"}, {"x-forwarded-for", "74.7.227.183"}, {"x-forwarded-host", "pinchflat.uiau7e.uncld.dev"}, {"x-forwarded-proto", "https"}, {"x-openai-host-hash", "454925582"} ], request_path: "/sources/22/media/21290/force_download", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GIcWdavG436aWMsAAbfh"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.9500.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/22/media/21290/force_download", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 56814}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYdFBWc0NmZG9KN3FiSnFuaHZtc2hUWlJl.msdIN7FvRF5ovFv1UUTBLNy4ec4PQE8xBajY7lzFpYA", "from" => "gptbot(at)openai.com", "host" => "pinchflat.uiau7e.uncld.dev", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.3; +https://openai.com/gptbot)", "via" => "2.0 Caddy", "x-forwarded-for" => "74.7.227.183", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https", "x-openai-host-hash" => "454925582" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/22/media/21290/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.9500.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/22/media/21290/force_download", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 56814}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYdFBWc0NmZG9KN3FiSnFuaHZtc2hUWlJl.msdIN7FvRF5ovFv1UUTBLNy4ec4PQE8xBajY7lzFpYA", "from" => "gptbot(at)openai.com", "host" => "pinchflat.uiau7e.uncld.dev", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.3; +https://openai.com/gptbot)", "via" => "2.0 Caddy", "x-forwarded-for" => "74.7.227.183", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https", "x-openai-host-hash" => "454925582" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{ "_pinch (truncated) 13:07:55.499 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=CcUb7Ky2oSI --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --embed-subs --sub-langs en --write-thumbnail --convert-thumbnail jpg --output thumbnail:/downloads/CodeSync/Season %(upload_date>%Y)S/s%(upload_date>%Y)Se%(upload_date>%m%d)S99 - %(title)S-thumb.%(ext)S --embed-thumbnail --convert-thumbnail jpg --write-info-json --clean-info-json --embed-metadata --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --sponsorblock-mark sponsor,intro,outro,selfpromo,preview,filler,interaction,music_offtopic --output /downloads/CodeSync/Season %(upload_date>%Y)S/s%(upload_date>%Y)Se%(upload_date>%m%d)S99 - %(title)S.%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/88/b5/88b56f80e7e877855ffc1a1f0493f8f6dfc1ab542c73389b6ee0d942e9c774ec.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 1 with: WARNING: The extractor specified to use impersonation for this download, but no impersonate target is available. If you encounter errors, then see https://github.com/yt-dlp/yt-dlp#impersonation for information on installing the required dependencies ERROR: Unable to download video subtitles for 'en': HTTP Error 429: Too Many Requests 13:07:55.499 [error] yt-dlp download error for media item #58546: "WARNING: The extractor specified to use impersonation for this download, but no impersonate target is available. If you encounter errors, then see https://github.com/yt-dlp/yt-dlp#impersonation for information on installing the required dependencies\nERROR: Unable to download video subtitles for 'en': HTTP Error 429: Too Many Requests\n" 13:07:55.501 [info] {"error":"** (Oban.PerformError) Pinchflat.Downloading.MediaDownloadWorker failed with {:error, :download_failed}","args":{"id":58546},"id":201954,"meta":{},"state":"failure","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":15607184,"event":"job:exception","queue_time":91402,"attempt":5,"tags":["media_item","media_fetching","show_in_dashboard"]} 13:07:57.941 [info] {"args":{"id":15},"id":202906,"meta":{},"system_time":1767406077941384130,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 13:07:57.942 [debug] QUERY OK source="sources" db=0.4ms queue=0.1ms idle=1159.2ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [15] 13:07:57.943 [debug] QUERY OK source="settings" db=0.2ms idle=1160.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:07:57.944 [debug] QUERY OK source="media_profiles" db=0.2ms idle=1011.6ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:07:57.944 [debug] QUERY OK source="settings" db=0.1ms idle=9.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:07:57.944 [debug] Fetching recent media IDs from YouTube API for playlist: UU5qRAYQmCLx8hFGIiTWSQvA 13:07:57.945 [debug] QUERY OK source="settings" db=0.5ms idle=3.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:07:57.945 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 13:07:58.414 [debug] QUERY OK source="media_items" db=4.3ms idle=466.8ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND m0."media_id" IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [15, "EMmIdkwn6a4", "EBT3EIoJpDc", "P2j2jM33fbk", "KuYhCywx8JM", "EteM8YNAFu8", "-KN9sfrroJA", "35D6yzUQM8I", "pIqvmN8ePkc", "rR5RqL2cjPE", "B2mmx85ZIsE", "b-jTeTJ1ekk", "Qa4dYWqfgmg", "TZZgrQEsl4c", "hMFEigXIhgA", "yf8ozrYeFEk", "QoCmQRZKU_c", "Qa9rFTiItTE", "Kxw9tq49VBM", "aLj4QgEf7gQ", "-D7c5td5vhw", "UNJUpex0blc", "Afa2PJq3okY", "r9A1srY7LdU", "m6YZoOWrLlk", "RKSlnQcuZt4", "qEjkDPJmKIo", "fZirHVq8wp0", "jdB56zAMJgE", "F92Oe7JuDtI", "luEgOCX58gw", "9CkNfdQpsuo", "eC3Mv474A8c", "mq6lsIgLLqY", "Wqmn4OTW6Fw", "4yYMQFLVRNc", "TsdMEmH2Lsw", "HQeTYLxz6iY", "V-JtebgnFoM", "2cXS3i36Kh8", "wznCZtGitN8", "2tYVGxZMOiQ", "9bxljq6ljbE", "9hHVjpo_HDA", "w8bqGx4ZtYQ", "yFYGd9irJ5k", "WTfhL2-cT1U", "LCR3ZsqWhuo", "Tj09jojsiaM", "_GZvVqjqlM0", ...] 13:07:58.434 [debug] QUERY OK source="media_items" db=18.1ms idle=472.4ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [15] 13:07:58.439 [debug] QUERY OK source="tasks" db=0.5ms idle=492.9ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [202934, 15, ~U[2026-01-03 02:07:58Z], ~U[2026-01-03 02:07:58Z]] 13:07:58.440 [info] {"args":{"id":15},"id":202906,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":497948,"event":"job:stop","queue_time":424383,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 13:08:00.127 [info] {"source":"oban","duration":271,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 13:08:02.813 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=CYW3qAtbiSg --no-simulate --no-progress --force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --embed-subs --sub-langs en --write-thumbnail --convert-thumbnail jpg --output thumbnail:/downloads/Monument/Season %(upload_date>%Y)S/s%(upload_date>%Y)Se%(upload_date>%m%d)S99 - %(title)S-thumb.%(ext)S --embed-thumbnail --convert-thumbnail jpg --write-info-json --clean-info-json --embed-metadata --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --sponsorblock-mark sponsor,intro,outro,selfpromo,preview,filler,interaction,music_offtopic --output /downloads/Monument/Season %(upload_date>%Y)S/s%(upload_date>%Y)Se%(upload_date>%m%d)S99 - %(title)S.%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/a7/af/a7af8ac50d73877d53447db6024248bb5020ab523904b2330ef07e71201bf529.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: WARNING: Replacing existing file "/downloads/Monument/Season 2025/s2025e112799 - MNMT 496 : Tauceti-thumb.jpg" 13:08:02.890 [debug] Running yt-dlp command for action: download_thumbnail 13:08:02.892 [debug] QUERY OK source="settings" db=0.5ms idle=1109.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:08:02.893 [debug] QUERY OK source="settings" db=0.4ms idle=1110.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:08:02.894 [debug] QUERY OK source="settings" db=0.4ms idle=1110.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:08:02.894 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=CYW3qAtbiSg --no-simulate --skip-download --write-thumbnail --convert-thumbnail jpg --output /config/metadata/media_items/57485/thumbnail.%(ext)s --print-to-file after_move:%()j /tmp/pinchflat/data/09/ee/09ee3c9988398dcd2e3b9a9161e63d4a8653bb32fd78ad19f015a0eb16dc38ee.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 13:08:02.959 [info] {"args":{"id":18},"id":202907,"meta":{},"system_time":1767406082958869961,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 13:08:02.960 [debug] QUERY OK source="sources" db=1.0ms idle=66.2ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [18] 13:08:02.961 [debug] QUERY OK source="settings" db=0.7ms queue=0.1ms idle=67.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:08:02.963 [debug] QUERY OK source="media_profiles" db=0.7ms queue=0.1ms idle=67.7ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:08:02.964 [debug] QUERY OK source="settings" db=0.6ms queue=0.1ms idle=13.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:08:02.964 [debug] Fetching recent media IDs from YouTube API for playlist: UUuisDAMnvHMYuLFRedMgmVw 13:08:02.965 [debug] QUERY OK source="settings" db=0.4ms queue=0.1ms idle=6.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:08:02.965 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 13:08:03.330 [debug] QUERY OK source="media_items" db=4.3ms idle=365.8ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND m0."media_id" IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [18, "mf2Em7F_qDM", "PjvBtlIGGQU", "EF_PO-pALOQ", "j9eh7huEF4A", "y3FGuwfGzL0", "ZWH_eu9wdUE", "UccWWifa8jA", "0L8xWydKOhk", "CkSloYV3ay4", "SkQ7ywGW2HY", "QM3qu001Xdk", "jOTurZWIEmw", "pojDco-WhA4", "GD19Y1VYBKY", "cvViWSBLu-U", "wXm5ocXv9ho", "uB1Tk9eXQbk", "I7vb-PGArW4", "0h9qvAA5dfQ", "7yx-SecBATo", "oj1ySj7TVJk", "dtTdjRB4Q4g", "mpfcVNb8Mhs", "D3MFnCKv2Mc", "458_RTLWN2E", "W26HiyQ5k1s", "w4NDxPYJs1I", "cxuEV05UN7U", "5cPjR5FVDOw", "nJhbZNSrP4c", "X9Eu7mui35E", "wrgZHIpa6F0", "JEN7jfNqy1A", "v31DYiS2LbY", "iJfD5wWLvuM", "qPVTMbiyPLE", "rM_nvsztYlw", "IoD1j3ZG-SQ", "DDnqxbWvIgQ", "HIhF6C1yc7M", "DlNIxjiqQvs", "JO0-kOXXMEw", "2DihqSsed3w", "uDlvlF5iKz8", "v2jg_5WZ41o", "JekH9K8_SS8", "xVV_6qW_Ho8", "qYOABpvD49s", "VAw8zvyLmfE", ...] 13:08:03.362 [debug] QUERY OK source="media_items" db=27.3ms queue=0.1ms idle=373.0ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [18] 13:08:03.369 [debug] QUERY OK source="tasks" db=1.2ms queue=0.1ms idle=402.0ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [202935, 18, ~U[2026-01-03 02:08:03Z], ~U[2026-01-03 02:08:03Z]] 13:08:03.370 [info] {"args":{"id":18},"id":202907,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":410275,"event":"job:stop","queue_time":481258,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 13:08:10.474 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=CYW3qAtbiSg --no-simulate --skip-download --write-thumbnail --convert-thumbnail jpg --output /config/metadata/media_items/57485/thumbnail.%(ext)s --print-to-file after_move:%()j /tmp/pinchflat/data/09/ee/09ee3c9988398dcd2e3b9a9161e63d4a8653bb32fd78ad19f015a0eb16dc38ee.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: WARNING: [youtube] CYW3qAtbiSg: Some tv client https formats have been skipped as they are missing a url. YouTube may have enabled the SABR-only or Server-Side Ad Placement experiment for the current session. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details WARNING: [youtube] CYW3qAtbiSg: Some web client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details 13:08:10.497 [debug] QUERY OK source="media_items" db=22.0ms queue=0.1ms idle=1692.0ms UPDATE "media_items" SET "media_downloaded_at" = ?, "predicted_media_filepath" = ?, "updated_at" = ? WHERE "id" = ? [~U[2026-01-03 02:08:02Z], "/downloads/Monument/Season 2025/s2025e112799 - MNMT 496 : Tauceti.mp4", ~U[2026-01-03 02:08:10Z], 57485] 13:08:10.527 [debug] QUERY OK source="media_items" db=5.1ms idle=1739.2ms UPDATE "media_items" SET "media_redownloaded_at" = ?, "media_size_bytes" = ?, "updated_at" = ? WHERE "id" = ? [~U[2026-01-03 02:08:10Z], 985287934, ~U[2026-01-03 02:08:10Z], 57485] 13:08:10.528 [info] User scripts lifecyle file either not present or is empty. Skipping. 13:08:10.529 [info] {"args":{"id":57485,"quality_upgrade?":true},"id":202912,"meta":{},"state":"success","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":466148744,"event":"job:stop","queue_time":8377771,"attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 13:08:12.529 [info] {"source":"oban","duration":2707,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:08:13.990 [info] {"args":{"id":16},"id":202908,"meta":{},"system_time":1767406093990447539,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 13:08:13.991 [debug] QUERY OK source="sources" db=0.4ms idle=207.6ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [16] 13:08:13.992 [debug] QUERY OK source="settings" db=0.3ms idle=208.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:08:13.993 [debug] QUERY OK source="media_profiles" db=0.5ms queue=0.1ms idle=209.2ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:08:13.994 [debug] QUERY OK source="settings" db=0.6ms idle=10.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:08:13.994 [debug] Fetching recent media IDs from YouTube API for playlist: UUPPfK7Nq_yQR84rn1wcTXBg 13:08:13.994 [debug] QUERY OK source="settings" db=0.5ms idle=3.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:08:13.995 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 13:08:14.396 [debug] QUERY OK source="media_items" db=5.9ms idle=398.8ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND m0."media_id" IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [16, "BiTNUZ2zONY", "7pVLE7ggkcc", "YAh-xEteBz4", "6hNpMT5OwGo", "vx3oGZYqxm4", "7W_ZSNuS-4w", "CxUC2HXvO84", "RxapAZRYJ6I", "f2ainZL8Tzk", "KJtASaKc95g", "yBCh5cyI0Po", "dg_HQL3GBcY", "ZiVvXPpo0eE", "YO1TnWptv3o", "HwnBnsQBeOA", "CCE2v3oIa74", "OWVPYr9e76Y", "VApJtIyMEec", "XtOIQYVq26o", "gZL1KzV54Cw", "kmU-Eazta1s", "XXthHXEpEP8", "dPw_HkMgYI0", "rxq-TvgNCBU", "SaCbUtTuLhA", "TWLqSk4ZlN0", "p7_rduK5WA0", "lNZ56C-f4a8", "GlK3f1cs_l4", "Yabwyb14-BQ", "WupRwvJ7sOc", "MhpoNL1gZbw", "yUfm6AbtJ0g", "y8zfgIgZ4c0", "gOwjmKMmkV4", "aTiunvocl5c", "KebjX3KEgWQ", "0T2MYXljL5o", "i7sbS92R4cg", "66CDGzjLBtY", "T_W0FWiJmM8", "u_80rUKItGc", "C9_wibbg1Ug", "A4mg1ZUb-7s", "YmUfZt4Ku9s", "DoWsgrlIjYU", "gc5ojxTuwOg", "3AMdPMoGJus", "htYY8VwN-9g", ...] 13:08:14.401 [debug] QUERY OK source="media_items" db=3.4ms idle=406.2ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [16] 13:08:14.406 [debug] QUERY OK source="tasks" db=0.8ms idle=410.3ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [202936, 16, ~U[2026-01-03 02:08:14Z], ~U[2026-01-03 02:08:14Z]] 13:08:14.407 [info] {"args":{"id":16},"id":202908,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":415862,"event":"job:stop","queue_time":460664,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 13:08:42.532 [info] {"source":"oban","duration":1726,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:08:46.084 [info] {"args":{"id":58546},"id":201954,"meta":{},"system_time":1767406126083978443,"max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","event":"job:start","attempt":6,"tags":["media_item","media_fetching","show_in_dashboard"]} 13:08:46.085 [debug] QUERY OK source="media_items" db=0.7ms queue=0.1ms idle=301.4ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [58546] 13:08:46.086 [info] User scripts lifecyle file either not present or is empty. Skipping. 13:08:46.087 [debug] QUERY OK source="sources" db=0.7ms idle=303.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [5] 13:08:46.088 [debug] QUERY OK source="media_profiles" db=0.6ms queue=0.1ms idle=304.3ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:08:46.090 [debug] QUERY OK source="media_items" db=0.9ms queue=0.1ms idle=13.5ms SELECT 1 FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) LIMIT 1 [58546] 13:08:46.092 [debug] QUERY OK source="media_metadata" db=0.2ms idle=8.4ms SELECT m0."id", m0."metadata_filepath", m0."thumbnail_filepath", m0."media_item_id", m0."inserted_at", m0."updated_at", m0."media_item_id" FROM "media_metadata" AS m0 WHERE (m0."media_item_id" = ?) [58546] 13:08:46.093 [debug] QUERY OK source="media_profiles" db=0.4ms idle=7.2ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:08:46.094 [debug] QUERY OK source="settings" db=0.3ms idle=6.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:08:46.095 [debug] QUERY OK source="settings" db=0.3ms queue=0.1ms idle=6.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:08:46.095 [debug] Running yt-dlp command for action: get_downloadable_status 13:08:46.097 [debug] QUERY OK source="settings" db=0.2ms idle=7.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:08:46.098 [debug] QUERY OK source="settings" db=0.2ms idle=5.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:08:46.098 [debug] QUERY OK source="settings" db=0.3ms idle=5.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:08:46.099 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=CcUb7Ky2oSI --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/05/83/058303ba3c894cdca7bb50d6e5363b5d0d6a52dde0813064c8f25d75c4ac5cec.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 13:08:53.065 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=CcUb7Ky2oSI --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/05/83/058303ba3c894cdca7bb50d6e5363b5d0d6a52dde0813064c8f25d75c4ac5cec.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 13:08:53.066 [debug] Running yt-dlp command for action: download 13:08:53.067 [debug] QUERY OK source="settings" db=0.5ms idle=1283.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:08:53.068 [debug] QUERY OK source="settings" db=0.6ms idle=1284.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:08:53.068 [debug] QUERY OK source="settings" db=0.5ms idle=1285.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:08:53.069 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=CcUb7Ky2oSI --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --embed-subs --sub-langs en --write-thumbnail --convert-thumbnail jpg --output thumbnail:/downloads/CodeSync/Season %(upload_date>%Y)S/s%(upload_date>%Y)Se%(upload_date>%m%d)S99 - %(title)S-thumb.%(ext)S --embed-thumbnail --convert-thumbnail jpg --write-info-json --clean-info-json --embed-metadata --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --sponsorblock-mark sponsor,intro,outro,selfpromo,preview,filler,interaction,music_offtopic --output /downloads/CodeSync/Season %(upload_date>%Y)S/s%(upload_date>%Y)Se%(upload_date>%m%d)S99 - %(title)S.%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/e4/87/e4873f9dc17a0b79f9939c988beabef7a52c54ab86092d205e7e3e90a063439a.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 13:08:54.074 [info] GET /app_info 13:08:54.074 [debug] Processing with PinchflatWeb.Settings.SettingController.app_info/2 Parameters: %{} Pipelines: [:browser] 13:08:54.076 [debug] QUERY OK source="settings" db=0.7ms queue=0.1ms idle=1008.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:08:54.077 [debug] QUERY OK source="settings" db=0.5ms queue=0.1ms idle=1008.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:08:54.079 [debug] QUERY OK source="settings" db=0.8ms idle=1009.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:08:54.081 [debug] QUERY OK source="settings" db=0.3ms idle=984.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:08:54.082 [debug] QUERY OK source="settings" db=0.3ms idle=298.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:08:54.083 [info] Sent 200 in 9ms 13:08:55.652 [info] GET /media/ee73d183-78db-46e3-98f7-d4d7bc2e8cb5/stream 13:08:55.652 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.stream/2 Parameters: %{"uuid" => "ee73d183-78db-46e3-98f7-d4d7bc2e8cb5", "v" => "1767395887"} Pipelines: [:maybe_basic_auth] 13:08:55.654 [debug] QUERY OK source="media_items" db=1.3ms queue=0.1ms idle=1573.7ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."uuid" = ?) ["ee73d183-78db-46e3-98f7-d4d7bc2e8cb5"] 13:08:55.675 [debug] Invalid range request for media item: ee73d183-78db-46e3-98f7-d4d7bc2e8cb5 - serving full file 13:08:55.675 [info] Sent 200 in 22ms 13:09:00.128 [info] {"source":"oban","duration":296,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 13:09:01.676 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=CcUb7Ky2oSI --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --embed-subs --sub-langs en --write-thumbnail --convert-thumbnail jpg --output thumbnail:/downloads/CodeSync/Season %(upload_date>%Y)S/s%(upload_date>%Y)Se%(upload_date>%m%d)S99 - %(title)S-thumb.%(ext)S --embed-thumbnail --convert-thumbnail jpg --write-info-json --clean-info-json --embed-metadata --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --sponsorblock-mark sponsor,intro,outro,selfpromo,preview,filler,interaction,music_offtopic --output /downloads/CodeSync/Season %(upload_date>%Y)S/s%(upload_date>%Y)Se%(upload_date>%m%d)S99 - %(title)S.%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/e4/87/e4873f9dc17a0b79f9939c988beabef7a52c54ab86092d205e7e3e90a063439a.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 1 with: WARNING: The extractor specified to use impersonation for this download, but no impersonate target is available. If you encounter errors, then see https://github.com/yt-dlp/yt-dlp#impersonation for information on installing the required dependencies ERROR: Unable to download video subtitles for 'en': HTTP Error 429: Too Many Requests 13:09:01.677 [error] yt-dlp download error for media item #58546: "WARNING: The extractor specified to use impersonation for this download, but no impersonate target is available. If you encounter errors, then see https://github.com/yt-dlp/yt-dlp#impersonation for information on installing the required dependencies\nERROR: Unable to download video subtitles for 'en': HTTP Error 429: Too Many Requests\n" 13:09:01.678 [info] {"error":"** (Oban.PerformError) Pinchflat.Downloading.MediaDownloadWorker failed with {:error, :download_failed}","args":{"id":58546},"id":201954,"meta":{},"state":"failure","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":15593678,"event":"job:exception","queue_time":581172,"attempt":6,"tags":["media_item","media_fetching","show_in_dashboard"]} 13:09:06.251 [info] GET /sources/8/media/58882 13:09:06.251 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "58882", "source_id" => "8"} Pipelines: [:browser] 13:09:06.252 [debug] QUERY OK source="media_items" db=0.4ms idle=1444.8ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [58882] 13:09:06.253 [debug] QUERY OK source="tasks" db=0.8ms idle=1121.1ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [58882] 13:09:06.254 [debug] QUERY OK source="sources" db=1.0ms idle=445.8ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [8] 13:09:06.254 [debug] QUERY OK source="oban_jobs" db=0.5ms idle=447.2ms SELECT o0."id", o0."state", o0."queue", o0."worker", o0."args", o0."meta", o0."tags", o0."errors", o0."attempt", o0."attempted_by", o0."max_attempts", o0."priority", o0."attempted_at", o0."cancelled_at", o0."completed_at", o0."discarded_at", o0."inserted_at", o0."scheduled_at", o0."id" FROM "oban_jobs" AS o0 WHERE (o0."id" = ?) [202128] 13:09:06.255 [debug] QUERY OK source="settings" db=0.3ms idle=120.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:09:06.256 [debug] QUERY OK source="settings" db=0.1ms idle=3.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:09:06.257 [debug] QUERY OK source="settings" db=0.1ms idle=3.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:09:06.258 [debug] QUERY OK source="media_profiles" db=0.3ms idle=4.0ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:09:06.292 [info] Sent 200 in 40ms 13:09:12.536 [info] {"source":"oban","duration":2893,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:09:16.221 [info] {"args":{"id":20},"id":202909,"meta":{},"system_time":1767406156221731911,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 13:09:16.222 [debug] QUERY OK source="sources" db=0.4ms idle=410.1ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [20] 13:09:16.223 [debug] QUERY OK source="settings" db=0.2ms idle=410.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:09:16.223 [debug] QUERY OK source="media_profiles" db=0.5ms idle=411.2ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:09:16.224 [debug] QUERY OK source="settings" db=0.5ms idle=9.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:09:16.224 [debug] Fetching recent media IDs from YouTube API for playlist: UU3HjB3X8jeENm46HCkI0Inw 13:09:16.225 [debug] QUERY OK source="settings" db=0.3ms idle=3.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:09:16.225 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 13:09:16.696 [debug] QUERY OK source="media_items" db=5.6ms idle=468.3ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND m0."media_id" IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [20, "CISwNCR8EXc", "EiIJqc5mV90", "8xJUjtnu72E", "Whh2rDVxvYg", "VybtaBZZqCg", "fuIOAraiRAY", "Ri4qqynMLHk", "xglNhNm95KQ", "5hEq1j_TsEY", "9f5iUsFWqoo", "0SXIhVupLZY", "3gAJpHP3yg4", "8zlnEbQgP74", "EnTFdexbFrM", "P3AU8vUwvAs", "4dQvS_n0uy4", "T5CRSwoP5_w", "cd8IcmBLpXc", "L4nAcT3QYkA", "5gskEcRE1uo", "1xywnh3DqFQ", "fXeqjU4tHqo", "YBMxdPCG_PY", "GB5_4JUB9hc", "EtAUdnvt0kc", "y-5D2HhLbso", "q8kP0pRFRMc", "8mQkTPoWfPo", "U5I92UivGzU", "UoMTKhqTf1U", "oIvzxlDViTo", "kCnh99-yZIs", "orABz0cfQZY", "VKt2PXkavyU", "kYwyB7o7BJs", "UB1FC4Nim1Y", "kN_eMzoJJmA", "4hdpejFLkPc", "ArSlY77uV1w", "2me_AlMFJh8", "OlKsICCPadE", "SjpJZ66rGaU", "iRZp_9irH2g", "CN9qeuO04A4", "BUnuun2sL-8", "XSIfSz3ZEGc", "hW5pHqeC1t4", "_cJV_l9tlaU", "ChT4bsCpwcU", ...] 13:09:16.747 [debug] QUERY OK source="media_items" db=48.5ms idle=475.8ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [20] 13:09:16.752 [debug] QUERY OK source="tasks" db=0.9ms idle=526.3ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [202937, 20, ~U[2026-01-03 02:09:16Z], ~U[2026-01-03 02:09:16Z]] 13:09:16.753 [info] {"args":{"id":20},"id":202909,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":530943,"event":"job:stop","queue_time":471944,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 13:09:19.259 [info] {"args":{"id":21},"id":202910,"meta":{},"system_time":1767406159259182985,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 13:09:19.260 [debug] QUERY OK source="sources" db=0.7ms queue=0.1ms idle=1447.6ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [21] 13:09:19.261 [debug] QUERY OK source="settings" db=0.5ms idle=1448.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:09:19.262 [debug] QUERY OK source="media_profiles" db=0.6ms idle=1042.2ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:09:19.263 [debug] QUERY OK source="settings" db=0.4ms idle=11.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:09:19.263 [debug] Fetching recent media IDs from YouTube API for playlist: UU2-i3KuYoODXsM99Z3-Gm0A 13:09:19.263 [debug] QUERY OK source="settings" db=0.3ms idle=4.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:09:19.263 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 13:09:19.791 [debug] QUERY OK source="media_items" db=5.0ms idle=525.9ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND m0."media_id" IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [21, "J5rMffRWoaE", "SpNjg65s29I", "8YoFYb6ahAc", "2z0gjjea0mQ", "2d3dU0R4Sk4", "_TFHZ9W3Jt8", "dqjpFcJG5Cc", "Pm0PXgXMNVY", "YXwzRiYgHHc", "mUK6UT_7PZo", "nE49QFWymsI", "WY4rfxfFsVA", "LHyVvVpA0xM", "HYIwk4qL2os", "RZBQe4RLdZ8", "DN5ES5PlK6c", "OaO4UInG53A", "UqcJk1mPcnQ", "NqSJZesKtFs", "3bsFFOwsQzA", "EaXJ1rQ2v5k", "jnV5Ptgg1Xc", "rXghFt-g_OM", "Y_MU28GV-M0", "OZ1fXb4gcv0", "t7JeRNvBG40", "XG41sdzNz7I", "rQFtIiVV7RA", "TviKrv1FTzc", "0iH3eN6DUbM", "AjzhbnNiJO0", "3Y2fdnw7AwM", "8Z_XpRjS2oo", "RY1Nnw_qOGc", "pUB0TU9UQhI", "eVR3mgSxjUk", "5hGYObRZMPQ", "4MemHNHi_YE", "yM6u1-_JNXo", "VGLq2Tjokl4", "XpV4r2KB0UA", "cvrpvL1kO_8", "Q4kS9l81A0k", "Mq47ro7Pc00", "GAu1Y-5EPeM", "dNIc1vTlbDc", "S1zqKNfggRQ", "zquTrv6kv-U", "-H6sKLcAL9I", ...] 13:09:19.849 [debug] QUERY OK source="media_items" db=55.6ms idle=532.5ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [21] 13:09:19.852 [debug] QUERY OK source="tasks" db=0.4ms idle=588.2ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [202938, 21, ~U[2026-01-03 02:09:19Z], ~U[2026-01-03 02:09:19Z]] 13:09:19.853 [info] {"args":{"id":21},"id":202910,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":593491,"event":"job:stop","queue_time":379943,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 13:09:38.509 [info] GET /sources/12/media/58545 13:09:38.509 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "58545", "source_id" => "12"} Pipelines: [:browser] 13:09:38.510 [debug] QUERY OK source="media_items" db=1.0ms queue=0.1ms idle=697.6ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [58545] 13:09:38.512 [debug] QUERY OK source="tasks" db=0.6ms queue=0.1ms idle=699.2ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [58545] 13:09:38.512 [debug] QUERY OK source="sources" db=1.1ms idle=699.2ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [12] 13:09:38.513 [debug] QUERY OK source="oban_jobs" db=0.5ms queue=0.1ms idle=700.8ms SELECT o0."id", o0."state", o0."queue", o0."worker", o0."args", o0."meta", o0."tags", o0."errors", o0."attempt", o0."attempted_by", o0."max_attempts", o0."priority", o0."attempted_at", o0."cancelled_at", o0."completed_at", o0."discarded_at", o0."inserted_at", o0."scheduled_at", o0."id" FROM "oban_jobs" AS o0 WHERE (o0."id" = ?) [201953] 13:09:38.515 [debug] QUERY OK source="settings" db=0.4ms queue=0.1ms idle=212.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:09:38.516 [debug] QUERY OK source="settings" db=0.7ms queue=0.1ms idle=4.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:09:38.517 [debug] QUERY OK source="settings" db=0.3ms idle=4.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:09:38.518 [debug] QUERY OK source="media_profiles" db=0.4ms idle=5.6ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:09:38.540 [info] Sent 200 in 31ms 13:09:42.540 [info] {"source":"oban","duration":2983,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:09:55.868 [info] GET /sources/11/media/58559/force_download 13:09:55.869 [debug] QUERY OK source="settings" db=0.4ms queue=0.1ms idle=506.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:09:55.870 [debug] QUERY OK source="settings" db=0.3ms queue=0.1ms idle=58.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:09:55.870 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 13:09:55.871 [error] #PID<0.9540.0> running PinchflatWeb.Endpoint (connection #PID<0.9539.0>, stream id 1) terminated Server: pinchflat.uiau7e.uncld.dev:80 (http) Request: GET /sources/11/media/58559/force_download ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/11/media/58559/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.9539.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/11/media/58559/force_download", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 55352}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "from" => "gptbot(at)openai.com", "host" => "pinchflat.uiau7e.uncld.dev", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.3; +https://openai.com/gptbot)", "via" => "2.0 Caddy", "x-forwarded-for" => "74.7.227.183", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https", "x-openai-host-hash" => "454925582" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.uiau7e.uncld.dev", method: "GET", owner: #PID<0.9540.0>, params: %{}, path_info: ["sources", "11", "media", "58559", "force_download"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.uiau7e.uncld.dev", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {10, 210, 0, 2}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"accept-encoding", "gzip, br, deflate"}, {"from", "gptbot(at)openai.com"}, {"host", "pinchflat.uiau7e.uncld.dev"}, {"user-agent", "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.3; +https://openai.com/gptbot)"}, {"via", "2.0 Caddy"}, {"x-forwarded-for", "74.7.227.183"}, {"x-forwarded-host", "pinchflat.uiau7e.uncld.dev"}, {"x-forwarded-proto", "https"}, {"x-openai-host-hash", "454925582"} ], request_path: "/sources/11/media/58559/force_download", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GIcWki6VqpsJ9-sAAbkh"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.9539.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/11/media/58559/force_download", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 55352}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "from" => "gptbot(at)openai.com", "host" => "pinchflat.uiau7e.uncld.dev", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.3; +https://openai.com/gptbot)", "via" => "2.0 Caddy", "x-forwarded-for" => "74.7.227.183", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https", "x-openai-host-hash" => "454925582" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/11/media/58559/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.9539.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/11/media/58559/force_download", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 55352}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "from" => "gptbot(at)openai.com", "host" => "pinchflat.uiau7e.uncld.dev", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.3; +https://openai.com/gptbot)", "via" => "2.0 Caddy", "x-forwarded-for" => "74.7.227.183", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https", "x-openai-host-hash" => "454925582" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.uiau7e.uncld.dev", method: "GET", owner: #PID<0.9540.0>, params: %{}, path_info: ["sources", "11", "media", "58559", "force_download"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.uiau7e.uncld.dev", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {10, 210, 0, 2}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"accept-encoding" (truncated) 13:10:00.129 [info] {"source":"oban","duration":350,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 13:10:12.545 [info] {"source":"oban","duration":3584,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:10:26.458 [info] {"args":{"id":58546},"id":201954,"meta":{},"system_time":1767406226458488495,"max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","event":"job:start","attempt":7,"tags":["media_item","media_fetching","show_in_dashboard"]} 13:10:26.459 [debug] QUERY OK source="media_items" db=0.9ms idle=646.8ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [58546] 13:10:26.460 [info] User scripts lifecyle file either not present or is empty. Skipping. 13:10:26.461 [debug] QUERY OK source="sources" db=0.7ms idle=648.3ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [5] 13:10:26.462 [debug] QUERY OK source="media_profiles" db=0.8ms idle=649.4ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:10:26.463 [debug] QUERY OK source="media_items" db=1.1ms idle=12.0ms SELECT 1 FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) LIMIT 1 [58546] 13:10:26.466 [debug] QUERY OK source="media_metadata" db=0.3ms idle=7.9ms SELECT m0."id", m0."metadata_filepath", m0."thumbnail_filepath", m0."media_item_id", m0."inserted_at", m0."updated_at", m0."media_item_id" FROM "media_metadata" AS m0 WHERE (m0."media_item_id" = ?) [58546] 13:10:26.467 [debug] QUERY OK source="media_profiles" db=0.6ms idle=6.8ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:10:26.468 [debug] QUERY OK source="settings" db=0.4ms idle=6.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:10:26.468 [debug] QUERY OK source="settings" db=0.3ms idle=6.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:10:26.469 [debug] Running yt-dlp command for action: get_downloadable_status 13:10:26.470 [debug] QUERY OK source="settings" db=0.3ms idle=6.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:10:26.471 [debug] QUERY OK source="settings" db=0.2ms idle=4.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:10:26.471 [debug] QUERY OK source="settings" db=0.3ms idle=3.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:10:26.471 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=CcUb7Ky2oSI --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/35/35/35352eecae3dd52800ce4532033c36b98c8e42c5699053e9079bdc477f1b3753.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 13:10:33.622 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=CcUb7Ky2oSI --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/35/35/35352eecae3dd52800ce4532033c36b98c8e42c5699053e9079bdc477f1b3753.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 13:10:33.623 [debug] Running yt-dlp command for action: download 13:10:33.624 [debug] QUERY OK source="settings" db=0.5ms queue=0.2ms idle=1810.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:10:33.625 [debug] QUERY OK source="settings" db=0.3ms queue=0.2ms idle=1812.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:10:33.625 [debug] QUERY OK source="settings" db=0.3ms queue=0.1ms idle=1812.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:10:33.627 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=CcUb7Ky2oSI --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --embed-subs --sub-langs en --write-thumbnail --convert-thumbnail jpg --output thumbnail:/downloads/CodeSync/Season %(upload_date>%Y)S/s%(upload_date>%Y)Se%(upload_date>%m%d)S99 - %(title)S-thumb.%(ext)S --embed-thumbnail --convert-thumbnail jpg --write-info-json --clean-info-json --embed-metadata --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --sponsorblock-mark sponsor,intro,outro,selfpromo,preview,filler,interaction,music_offtopic --output /downloads/CodeSync/Season %(upload_date>%Y)S/s%(upload_date>%Y)Se%(upload_date>%m%d)S99 - %(title)S.%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/8f/08/8f0832d1fe15a60124f3f82132b804a6def9020f04eb6e7b342f2f172c6e7912.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 13:10:42.094 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=CcUb7Ky2oSI --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --embed-subs --sub-langs en --write-thumbnail --convert-thumbnail jpg --output thumbnail:/downloads/CodeSync/Season %(upload_date>%Y)S/s%(upload_date>%Y)Se%(upload_date>%m%d)S99 - %(title)S-thumb.%(ext)S --embed-thumbnail --convert-thumbnail jpg --write-info-json --clean-info-json --embed-metadata --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --sponsorblock-mark sponsor,intro,outro,selfpromo,preview,filler,interaction,music_offtopic --output /downloads/CodeSync/Season %(upload_date>%Y)S/s%(upload_date>%Y)Se%(upload_date>%m%d)S99 - %(title)S.%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/8f/08/8f0832d1fe15a60124f3f82132b804a6def9020f04eb6e7b342f2f172c6e7912.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 1 with: WARNING: [youtube] CcUb7Ky2oSI: Some tv client https formats have been skipped as they are missing a url. YouTube may have enabled the SABR-only or Server-Side Ad Placement experiment for the current session. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details WARNING: [youtube] CcUb7Ky2oSI: Some web client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details WARNING: The extractor specified to use impersonation for this download, but no impersonate target is available. If you encounter errors, then see https://github.com/yt-dlp/yt-dlp#impersonation for information on installing the required dependencies ERROR: Unable to download video subtitles for 'en': HTTP Error 429: Too Many Requests 13:10:42.095 [error] yt-dlp download error for media item #58546: "WARNING: [youtube] CcUb7Ky2oSI: Some tv client https formats have been skipped as they are missing a url. YouTube may have enabled the SABR-only or Server-Side Ad Placement experiment for the current session. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details\nWARNING: [youtube] CcUb7Ky2oSI: Some web client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details\nWARNING: The extractor specified to use impersonation for this download, but no impersonate target is available. If you encounter errors, then see https://github.com/yt-dlp/yt-dlp#impersonation for information on installing the required dependencies\nERROR: Unable to download video subtitles for 'en': HTTP Error 429: Too Many Requests\n" 13:10:42.099 [debug] QUERY OK source="media_items" db=2.9ms queue=0.2ms idle=1284.0ms UPDATE "media_items" SET "last_error" = ?, "updated_at" = ? WHERE "id" = ? ["WARNING: [youtube] CcUb7Ky2oSI: Some tv client https formats have been skipped as they are missing a url. YouTube may have enabled the SABR-only or Server-Side Ad Placement experiment for the current session. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details\nWARNING: [youtube] CcUb7Ky2oSI: Some web client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details\nWARNING: The extractor specified to use impersonation for this download, but no impersonate target is available. If you encounter errors, then see https://github.com/yt-dlp/yt-dlp#impersonation for information on installing the required dependencies\nERROR: Unable to download video subtitles for 'en': HTTP Error 429: Too Many Requests\n", ~U[2026-01-03 02:10:42Z], 58546] 13:10:42.101 [info] {"error":"** (Oban.PerformError) Pinchflat.Downloading.MediaDownloadWorker failed with {:error, :download_failed}","args":{"id":58546},"id":201954,"meta":{},"state":"failure","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":15641443,"event":"job:exception","queue_time":777940,"attempt":7,"tags":["media_item","media_fetching","show_in_dashboard"]} 13:10:42.547 [info] {"source":"oban","duration":1877,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:10:57.877 [info] GET /sources/11/media/58571/force_download 13:10:57.879 [debug] QUERY OK source="settings" db=0.6ms queue=0.1ms idle=333.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:10:57.880 [debug] QUERY OK source="settings" db=0.5ms queue=0.3ms idle=67.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:10:57.880 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 13:10:57.882 [error] #PID<0.9550.0> running PinchflatWeb.Endpoint (connection #PID<0.9549.0>, stream id 1) terminated Server: pinchflat.uiau7e.uncld.dev:80 (http) Request: GET /sources/11/media/58571/force_download ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/11/media/58571/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.9549.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/11/media/58571/force_download", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 38746}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "from" => "gptbot(at)openai.com", "host" => "pinchflat.uiau7e.uncld.dev", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.3; +https://openai.com/gptbot)", "via" => "2.0 Caddy", "x-forwarded-for" => "74.7.227.183", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https", "x-openai-host-hash" => "454925582" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.uiau7e.uncld.dev", method: "GET", owner: #PID<0.9550.0>, params: %{}, path_info: ["sources", "11", "media", "58571", "force_download"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.uiau7e.uncld.dev", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {10, 210, 0, 2}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"accept-encoding", "gzip, br, deflate"}, {"from", "gptbot(at)openai.com"}, {"host", "pinchflat.uiau7e.uncld.dev"}, {"user-agent", "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.3; +https://openai.com/gptbot)"}, {"via", "2.0 Caddy"}, {"x-forwarded-for", "74.7.227.183"}, {"x-forwarded-host", "pinchflat.uiau7e.uncld.dev"}, {"x-forwarded-proto", "https"}, {"x-openai-host-hash", "454925582"} ], request_path: "/sources/11/media/58571/force_download", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GIcWoJ6UNzhAVlYAAbmB"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.9549.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/11/media/58571/force_download", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 38746}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "from" => "gptbot(at)openai.com", "host" => "pinchflat.uiau7e.uncld.dev", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.3; +https://openai.com/gptbot)", "via" => "2.0 Caddy", "x-forwarded-for" => "74.7.227.183", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https", "x-openai-host-hash" => "454925582" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/11/media/58571/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.9549.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/11/media/58571/force_download", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 38746}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "from" => "gptbot(at)openai.com", "host" => "pinchflat.uiau7e.uncld.dev", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.3; +https://openai.com/gptbot)", "via" => "2.0 Caddy", "x-forwarded-for" => "74.7.227.183", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https", "x-openai-host-hash" => "454925582" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.uiau7e.uncld.dev", method: "GET", owner: #PID<0.9550.0>, params: %{}, path_info: ["sources", "11", "media", "58571", "force_download"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.uiau7e.uncld.dev", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {10, 210, 0, 2}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"accept-encoding" (truncated) 13:11:00.130 [info] {"source":"oban","duration":604,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 13:11:12.551 [info] {"source":"oban","duration":2091,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:11:20.057 [info] GET /.well-known/acme-challenge/M0Pq9xQ8YCjfmujLCjAnKghO_AdUXjWdnvPbugbfB4U 13:11:20.059 [debug] QUERY OK source="settings" db=0.5ms queue=0.2ms idle=458.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:11:20.060 [debug] QUERY OK source="settings" db=0.2ms queue=0.2ms idle=247.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:11:20.060 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 13:11:20.061 [error] #PID<0.9554.0> running PinchflatWeb.Endpoint (connection #PID<0.9553.0>, stream id 1) terminated Server: pinchflat.uiau7e.uncld.dev:80 (http) Request: GET /.well-known/acme-challenge/M0Pq9xQ8YCjfmujLCjAnKghO_AdUXjWdnvPbugbfB4U ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /.well-known/acme-challenge/M0Pq9xQ8YCjfmujLCjAnKghO_AdUXjWdnvPbugbfB4U (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.9553.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/.well-known/acme-challenge/M0Pq9xQ8YCjfmujLCjAnKghO_AdUXjWdnvPbugbfB4U", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 33106}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip", "host" => "pinchflat.uiau7e.uncld.dev", "referer" => "http://pinchflat.uiau7e.uncld.dev/.well-known/acme-challenge/M0Pq9xQ8YCjfmujLCjAnKghO_AdUXjWdnvPbugbfB4U", "user-agent" => "Mozilla/5.0 (compatible; Let's Encrypt validation server; +https://www.letsencrypt.org)", "via" => "1.1 Caddy", "x-forwarded-for" => "66.133.109.36", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.uiau7e.uncld.dev", method: "GET", owner: #PID<0.9554.0>, params: %{}, path_info: [".well-known", "acme-challenge", "M0Pq9xQ8YCjfmujLCjAnKghO_AdUXjWdnvPbugbfB4U"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.uiau7e.uncld.dev", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {10, 210, 0, 2}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"accept-encoding", "gzip"}, {"host", "pinchflat.uiau7e.uncld.dev"}, {"referer", "http://pinchflat.uiau7e.uncld.dev/.well-known/acme-challenge/M0Pq9xQ8YCjfmujLCjAnKghO_AdUXjWdnvPbugbfB4U"}, {"user-agent", "Mozilla/5.0 (compatible; Let's Encrypt validation server; +https://www.letsencrypt.org)"}, {"via", "1.1 Caddy"}, {"x-forwarded-for", "66.133.109.36"}, {"x-forwarded-host", "pinchflat.uiau7e.uncld.dev"}, {"x-forwarded-proto", "https"} ], request_path: "/.well-known/acme-challenge/M0Pq9xQ8YCjfmujLCjAnKghO_AdUXjWdnvPbugbfB4U", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GIcWpcijFoANC5IAAbmh"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.9553.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/.well-known/acme-challenge/M0Pq9xQ8YCjfmujLCjAnKghO_AdUXjWdnvPbugbfB4U", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 33106}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip", "host" => "pinchflat.uiau7e.uncld.dev", "referer" => "http://pinchflat.uiau7e.uncld.dev/.well-known/acme-challenge/M0Pq9xQ8YCjfmujLCjAnKghO_AdUXjWdnvPbugbfB4U", "user-agent" => "Mozilla/5.0 (compatible; Let's Encrypt validation server; +https://www.letsencrypt.org)", "via" => "1.1 Caddy", "x-forwarded-for" => "66.133.109.36", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /.well-known/acme-challenge/M0Pq9xQ8YCjfmujLCjAnKghO_AdUXjWdnvPbugbfB4U (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.9553.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/.well-known/acme-challenge/M0Pq9xQ8YCjfmujLCjAnKghO_AdUXjWdnvPbugbfB4U", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 33106}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip", "host" => "pinchflat.uiau7e.uncld.dev", "referer" => "http://pinchflat.uiau7e.uncld.dev/.well-known/acme-challenge/M0Pq9xQ8YCjfmujLCjAnKghO_AdUXjWdnvPbugbfB4U", "user-agent" => "Mozilla/5.0 (compatible; Let's Encrypt validation server; +https://www.letsencrypt.org)", "via" => "1.1 Caddy", "x-forwarded-for" => "66.133.109.36", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.uiau7e.uncld.dev", method: "GET", owner: #PID<0.9554.0>, params: %{}, path_info: [".well-known", "acme-challenge", "M0Pq9xQ8YCjfmujLCjAnKghO_AdUXjWdnvPbugbfB4U"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.uiau7e.u (truncated) 13:11:27.421 [info] GET /.well-known/acme-challenge/Fdw3f_tx6PRvdtWTOgY8d5ySOTLhZPJaysraRK8LTmU 13:11:27.422 [debug] QUERY OK source="settings" db=0.3ms queue=0.1ms idle=1609.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:11:27.422 [debug] QUERY OK source="settings" db=0.1ms queue=0.1ms idle=1610.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:11:27.422 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 13:11:27.423 [error] #PID<0.9556.0> running PinchflatWeb.Endpoint (connection #PID<0.9555.0>, stream id 1) terminated Server: pinchflat.uiau7e.uncld.dev:80 (http) Request: GET /.well-known/acme-challenge/Fdw3f_tx6PRvdtWTOgY8d5ySOTLhZPJaysraRK8LTmU ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /.well-known/acme-challenge/Fdw3f_tx6PRvdtWTOgY8d5ySOTLhZPJaysraRK8LTmU (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.9555.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/.well-known/acme-challenge/Fdw3f_tx6PRvdtWTOgY8d5ySOTLhZPJaysraRK8LTmU", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 44458}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip", "host" => "pinchflat.uiau7e.uncld.dev", "referer" => "http://pinchflat.uiau7e.uncld.dev/.well-known/acme-challenge/Fdw3f_tx6PRvdtWTOgY8d5ySOTLhZPJaysraRK8LTmU", "user-agent" => "Mozilla/5.0 (compatible; Let's Encrypt validation server; +https://www.letsencrypt.org)", "via" => "1.1 Caddy", "x-forwarded-for" => "66.133.109.36", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.uiau7e.uncld.dev", method: "GET", owner: #PID<0.9556.0>, params: %{}, path_info: [".well-known", "acme-challenge", "Fdw3f_tx6PRvdtWTOgY8d5ySOTLhZPJaysraRK8LTmU"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.uiau7e.uncld.dev", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {10, 210, 0, 2}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"accept-encoding", "gzip"}, {"host", "pinchflat.uiau7e.uncld.dev"}, {"referer", "http://pinchflat.uiau7e.uncld.dev/.well-known/acme-challenge/Fdw3f_tx6PRvdtWTOgY8d5ySOTLhZPJaysraRK8LTmU"}, {"user-agent", "Mozilla/5.0 (compatible; Let's Encrypt validation server; +https://www.letsencrypt.org)"}, {"via", "1.1 Caddy"}, {"x-forwarded-for", "66.133.109.36"}, {"x-forwarded-host", "pinchflat.uiau7e.uncld.dev"}, {"x-forwarded-proto", "https"} ], request_path: "/.well-known/acme-challenge/Fdw3f_tx6PRvdtWTOgY8d5ySOTLhZPJaysraRK8LTmU", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GIcWp3-HfqKSe2sAAbnB"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.9555.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/.well-known/acme-challenge/Fdw3f_tx6PRvdtWTOgY8d5ySOTLhZPJaysraRK8LTmU", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 44458}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip", "host" => "pinchflat.uiau7e.uncld.dev", "referer" => "http://pinchflat.uiau7e.uncld.dev/.well-known/acme-challenge/Fdw3f_tx6PRvdtWTOgY8d5ySOTLhZPJaysraRK8LTmU", "user-agent" => "Mozilla/5.0 (compatible; Let's Encrypt validation server; +https://www.letsencrypt.org)", "via" => "1.1 Caddy", "x-forwarded-for" => "66.133.109.36", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /.well-known/acme-challenge/Fdw3f_tx6PRvdtWTOgY8d5ySOTLhZPJaysraRK8LTmU (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.9555.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/.well-known/acme-challenge/Fdw3f_tx6PRvdtWTOgY8d5ySOTLhZPJaysraRK8LTmU", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 44458}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip", "host" => "pinchflat.uiau7e.uncld.dev", "referer" => "http://pinchflat.uiau7e.uncld.dev/.well-known/acme-challenge/Fdw3f_tx6PRvdtWTOgY8d5ySOTLhZPJaysraRK8LTmU", "user-agent" => "Mozilla/5.0 (compatible; Let's Encrypt validation server; +https://www.letsencrypt.org)", "via" => "1.1 Caddy", "x-forwarded-for" => "66.133.109.36", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.uiau7e.uncld.dev", method: "GET", owner: #PID<0.9556.0>, params: %{}, path_info: [".well-known", "acme-challenge", "Fdw3f_tx6PRvdtWTOgY8d5ySOTLhZPJaysraRK8LTmU"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.uiau7e.u (truncated) 13:11:42.555 [info] {"source":"oban","duration":3638,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:11:58.619 [info] GET /sources/22/media/21280/force_download 13:11:58.621 [debug] QUERY OK source="settings" db=0.3ms idle=1808.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:11:58.622 [debug] QUERY OK source="settings" db=0.4ms queue=0.2ms idle=906.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:11:58.622 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 13:11:58.623 [error] #PID<0.9560.0> running PinchflatWeb.Endpoint (connection #PID<0.9559.0>, stream id 1) terminated Server: pinchflat.uiau7e.uncld.dev:80 (http) Request: GET /sources/22/media/21280/force_download ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/22/media/21280/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.9559.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/22/media/21280/force_download", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 50952}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "from" => "gptbot(at)openai.com", "host" => "pinchflat.uiau7e.uncld.dev", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.3; +https://openai.com/gptbot)", "via" => "2.0 Caddy", "x-forwarded-for" => "74.7.227.183", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https", "x-openai-host-hash" => "454925582" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.uiau7e.uncld.dev", method: "GET", owner: #PID<0.9560.0>, params: %{}, path_info: ["sources", "22", "media", "21280", "force_download"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.uiau7e.uncld.dev", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {10, 210, 0, 2}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"accept-encoding", "gzip, br, deflate"}, {"from", "gptbot(at)openai.com"}, {"host", "pinchflat.uiau7e.uncld.dev"}, {"user-agent", "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.3; +https://openai.com/gptbot)"}, {"via", "2.0 Caddy"}, {"x-forwarded-for", "74.7.227.183"}, {"x-forwarded-host", "pinchflat.uiau7e.uncld.dev"}, {"x-forwarded-proto", "https"}, {"x-openai-host-hash", "454925582"} ], request_path: "/sources/22/media/21280/force_download", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GIcWrsMdxAHOdQIAAK-i"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.9559.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/22/media/21280/force_download", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 50952}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "from" => "gptbot(at)openai.com", "host" => "pinchflat.uiau7e.uncld.dev", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.3; +https://openai.com/gptbot)", "via" => "2.0 Caddy", "x-forwarded-for" => "74.7.227.183", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https", "x-openai-host-hash" => "454925582" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/22/media/21280/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.9559.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/22/media/21280/force_download", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 50952}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "from" => "gptbot(at)openai.com", "host" => "pinchflat.uiau7e.uncld.dev", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.3; +https://openai.com/gptbot)", "via" => "2.0 Caddy", "x-forwarded-for" => "74.7.227.183", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https", "x-openai-host-hash" => "454925582" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.uiau7e.uncld.dev", method: "GET", owner: #PID<0.9560.0>, params: %{}, path_info: ["sources", "22", "media", "21280", "force_download"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.uiau7e.uncld.dev", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {10, 210, 0, 2}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"accept-encoding" (truncated) 13:11:59.769 [info] GET /.well-known/acme-challenge/4h7yqwWtiLO1HV39AEK-D3_t9ThqHt1CQPPcHQi4nZI 13:11:59.770 [debug] QUERY OK source="settings" db=0.4ms queue=0.1ms idle=1957.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:11:59.771 [debug] QUERY OK source="settings" db=0.4ms queue=0.1ms idle=1149.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:11:59.771 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 13:11:59.772 [error] #PID<0.9562.0> running PinchflatWeb.Endpoint (connection #PID<0.9561.0>, stream id 1) terminated Server: pinchflat.suranyami.com:80 (http) Request: GET /.well-known/acme-challenge/4h7yqwWtiLO1HV39AEK-D3_t9ThqHt1CQPPcHQi4nZI ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /.well-known/acme-challenge/4h7yqwWtiLO1HV39AEK-D3_t9ThqHt1CQPPcHQi4nZI (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.9561.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/.well-known/acme-challenge/4h7yqwWtiLO1HV39AEK-D3_t9ThqHt1CQPPcHQi4nZI", host: "pinchflat.suranyami.com", peer: {{10, 210, 0, 2}, 50962}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip", "host" => "pinchflat.suranyami.com", "referer" => "http://pinchflat.suranyami.com/.well-known/acme-challenge/4h7yqwWtiLO1HV39AEK-D3_t9ThqHt1CQPPcHQi4nZI", "user-agent" => "Mozilla/5.0 (compatible; Let's Encrypt validation server; +https://www.letsencrypt.org)", "via" => "1.1 Caddy", "x-forwarded-for" => "66.133.109.36", "x-forwarded-host" => "pinchflat.suranyami.com", "x-forwarded-proto" => "https" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.suranyami.com", method: "GET", owner: #PID<0.9562.0>, params: %{}, path_info: [".well-known", "acme-challenge", "4h7yqwWtiLO1HV39AEK-D3_t9ThqHt1CQPPcHQi4nZI"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.suranyami.com", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {10, 210, 0, 2}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"accept-encoding", "gzip"}, {"host", "pinchflat.suranyami.com"}, {"referer", "http://pinchflat.suranyami.com/.well-known/acme-challenge/4h7yqwWtiLO1HV39AEK-D3_t9ThqHt1CQPPcHQi4nZI"}, {"user-agent", "Mozilla/5.0 (compatible; Let's Encrypt validation server; +https://www.letsencrypt.org)"}, {"via", "1.1 Caddy"}, {"x-forwarded-for", "66.133.109.36"}, {"x-forwarded-host", "pinchflat.suranyami.com"}, {"x-forwarded-proto", "https"} ], request_path: "/.well-known/acme-challenge/4h7yqwWtiLO1HV39AEK-D3_t9ThqHt1CQPPcHQi4nZI", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GIcWrweh7QYDibUAAK_C"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.9561.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/.well-known/acme-challenge/4h7yqwWtiLO1HV39AEK-D3_t9ThqHt1CQPPcHQi4nZI", host: "pinchflat.suranyami.com", peer: {{10, 210, 0, 2}, 50962}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip", "host" => "pinchflat.suranyami.com", "referer" => "http://pinchflat.suranyami.com/.well-known/acme-challenge/4h7yqwWtiLO1HV39AEK-D3_t9ThqHt1CQPPcHQi4nZI", "user-agent" => "Mozilla/5.0 (compatible; Let's Encrypt validation server; +https://www.letsencrypt.org)", "via" => "1.1 Caddy", "x-forwarded-for" => "66.133.109.36", "x-forwarded-host" => "pinchflat.suranyami.com", "x-forwarded-proto" => "https" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /.well-known/acme-challenge/4h7yqwWtiLO1HV39AEK-D3_t9ThqHt1CQPPcHQi4nZI (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.9561.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/.well-known/acme-challenge/4h7yqwWtiLO1HV39AEK-D3_t9ThqHt1CQPPcHQi4nZI", host: "pinchflat.suranyami.com", peer: {{10, 210, 0, 2}, 50962}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip", "host" => "pinchflat.suranyami.com", "referer" => "http://pinchflat.suranyami.com/.well-known/acme-challenge/4h7yqwWtiLO1HV39AEK-D3_t9ThqHt1CQPPcHQi4nZI", "user-agent" => "Mozilla/5.0 (compatible; Let's Encrypt validation server; +https://www.letsencrypt.org)", "via" => "1.1 Caddy", "x-forwarded-for" => "66.133.109.36", "x-forwarded-host" => "pinchflat.suranyami.com", "x-forwarded-proto" => "https" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.suranyami.com", method: "GET", owner: #PID<0.9562.0>, params: %{}, path_info: [".well-known", "acme-challenge", "4h7yqwWtiLO1HV39AEK-D3_t9ThqHt1CQPPcHQi4nZI"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.suranyami.com", :phoenix_router => PinchflatWeb.Route (truncated) 13:12:00.132 [info] {"source":"oban","duration":552,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 13:12:07.701 [info] GET /.well-known/acme-challenge/-LiH7srgf7e1krrOfZza9RYm5DZHzMqYxNq-z9Ld7cQ 13:12:07.703 [debug] QUERY OK source="settings" db=0.7ms queue=0.1ms idle=1890.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:12:07.704 [debug] QUERY OK source="settings" db=0.4ms queue=0.1ms idle=1891.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:12:07.704 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 13:12:07.705 [error] #PID<0.9564.0> running PinchflatWeb.Endpoint (connection #PID<0.9563.0>, stream id 1) terminated Server: pinchflat.suranyami.com:80 (http) Request: GET /.well-known/acme-challenge/-LiH7srgf7e1krrOfZza9RYm5DZHzMqYxNq-z9Ld7cQ ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /.well-known/acme-challenge/-LiH7srgf7e1krrOfZza9RYm5DZHzMqYxNq-z9Ld7cQ (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.9563.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/.well-known/acme-challenge/-LiH7srgf7e1krrOfZza9RYm5DZHzMqYxNq-z9Ld7cQ", host: "pinchflat.suranyami.com", peer: {{10, 210, 0, 2}, 46794}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip", "host" => "pinchflat.suranyami.com", "referer" => "http://pinchflat.suranyami.com/.well-known/acme-challenge/-LiH7srgf7e1krrOfZza9RYm5DZHzMqYxNq-z9Ld7cQ", "user-agent" => "Mozilla/5.0 (compatible; Let's Encrypt validation server; +https://www.letsencrypt.org)", "via" => "1.1 Caddy", "x-forwarded-for" => "66.133.109.36", "x-forwarded-host" => "pinchflat.suranyami.com", "x-forwarded-proto" => "https" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.suranyami.com", method: "GET", owner: #PID<0.9564.0>, params: %{}, path_info: [".well-known", "acme-challenge", "-LiH7srgf7e1krrOfZza9RYm5DZHzMqYxNq-z9Ld7cQ"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.suranyami.com", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {10, 210, 0, 2}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"accept-encoding", "gzip"}, {"host", "pinchflat.suranyami.com"}, {"referer", "http://pinchflat.suranyami.com/.well-known/acme-challenge/-LiH7srgf7e1krrOfZza9RYm5DZHzMqYxNq-z9Ld7cQ"}, {"user-agent", "Mozilla/5.0 (compatible; Let's Encrypt validation server; +https://www.letsencrypt.org)"}, {"via", "1.1 Caddy"}, {"x-forwarded-for", "66.133.109.36"}, {"x-forwarded-host", "pinchflat.suranyami.com"}, {"x-forwarded-proto", "https"} ], request_path: "/.well-known/acme-challenge/-LiH7srgf7e1krrOfZza9RYm5DZHzMqYxNq-z9Ld7cQ", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GIcWsOBvGX0ZyO4AAK_i"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.9563.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/.well-known/acme-challenge/-LiH7srgf7e1krrOfZza9RYm5DZHzMqYxNq-z9Ld7cQ", host: "pinchflat.suranyami.com", peer: {{10, 210, 0, 2}, 46794}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip", "host" => "pinchflat.suranyami.com", "referer" => "http://pinchflat.suranyami.com/.well-known/acme-challenge/-LiH7srgf7e1krrOfZza9RYm5DZHzMqYxNq-z9Ld7cQ", "user-agent" => "Mozilla/5.0 (compatible; Let's Encrypt validation server; +https://www.letsencrypt.org)", "via" => "1.1 Caddy", "x-forwarded-for" => "66.133.109.36", "x-forwarded-host" => "pinchflat.suranyami.com", "x-forwarded-proto" => "https" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /.well-known/acme-challenge/-LiH7srgf7e1krrOfZza9RYm5DZHzMqYxNq-z9Ld7cQ (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.9563.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/.well-known/acme-challenge/-LiH7srgf7e1krrOfZza9RYm5DZHzMqYxNq-z9Ld7cQ", host: "pinchflat.suranyami.com", peer: {{10, 210, 0, 2}, 46794}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip", "host" => "pinchflat.suranyami.com", "referer" => "http://pinchflat.suranyami.com/.well-known/acme-challenge/-LiH7srgf7e1krrOfZza9RYm5DZHzMqYxNq-z9Ld7cQ", "user-agent" => "Mozilla/5.0 (compatible; Let's Encrypt validation server; +https://www.letsencrypt.org)", "via" => "1.1 Caddy", "x-forwarded-for" => "66.133.109.36", "x-forwarded-host" => "pinchflat.suranyami.com", "x-forwarded-proto" => "https" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.suranyami.com", method: "GET", owner: #PID<0.9564.0>, params: %{}, path_info: [".well-known", "acme-challenge", "-LiH7srgf7e1krrOfZza9RYm5DZHzMqYxNq-z9Ld7cQ"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.suranyami.com", :phoenix_router => PinchflatWeb.Route (truncated) 13:12:12.558 [info] {"source":"oban","duration":1847,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:12:12.772 [info] {"args":{"id":19},"id":202915,"meta":{},"system_time":1767406332772749773,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 13:12:12.773 [debug] QUERY OK source="sources" db=0.7ms idle=1013.2ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [19] 13:12:12.774 [debug] QUERY OK source="settings" db=0.4ms idle=962.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:12:12.775 [debug] QUERY OK source="media_profiles" db=0.5ms idle=216.1ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:12:12.776 [debug] QUERY OK source="settings" db=0.4ms idle=11.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:12:12.776 [debug] Fetching recent media IDs from YouTube API for playlist: UUaYhH3F6iB3KyW3afTHk5XA 13:12:12.776 [debug] QUERY OK source="settings" db=0.3ms idle=3.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:12:12.776 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 13:12:13.352 [debug] QUERY OK source="media_items" db=2.4ms queue=0.1ms idle=575.0ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND m0."media_id" IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [19, "mUlKcxGWvrQ", "ydfuNK4wSik", "x6cNQykYdEM", "SvyVS7zvquc", "l4O2F-1BWVI", "LYXADYUSTSg", "HpL40FdPGqk", "Wre5VWHxSug", "PdUu77SAH0I", "VCflrtok9hQ", "haEa6h8Ptf0", "c_-f7G9VSPw", "7rSLcNznix4", "OLXr-B-xwY8", "X05FPJq6_Oc", "kuL-trgOvq8", "WpBEifN8BYw", "YETks_YtraY", "bwKKd4N8Q2E", "PpNfOqbt0a8", "GyifuiQ6p48", "SkoFBCBASto", "-GNid2M6IC8", "muehDmLuJSw", "nBx5yssxPDk", "Q6vzDo6it9o", "AH9Z6_PlKhA", "dZfthyLyjDk", "j9UuSMaqX9Q", "jmoVFLUvyD0", "tKm_pnNEDsc", "boVAiizeh1M", "FNtBH6k7Jmo", "MDhN5WGOJ_o", "P-UQX5L_Ff0", "kys3lRzOOEY", "VDHSC2Dl8f0", "JU0uEdyPKlE", "0sSWAzq7rjc", "HOLXNrjWeuo"] 13:12:13.355 [debug] QUERY OK source="media_items" db=2.0ms idle=578.8ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [19] 13:12:13.360 [debug] QUERY OK source="tasks" db=1.1ms idle=582.6ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [202939, 19, ~U[2026-01-03 02:12:13Z], ~U[2026-01-03 02:12:13Z]] 13:12:13.361 [info] {"args":{"id":19},"id":202915,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":587867,"event":"job:stop","queue_time":354401,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 13:12:13.776 [info] {"args":{"id":23},"id":202916,"meta":{},"system_time":1767406333776504928,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 13:12:13.777 [debug] QUERY OK source="sources" db=0.7ms idle=416.4ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [23] 13:12:13.778 [debug] QUERY OK source="settings" db=0.5ms idle=416.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:12:13.779 [debug] QUERY OK source="media_profiles" db=0.5ms idle=408.9ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:12:13.780 [debug] QUERY OK source="settings" db=0.4ms idle=10.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:12:13.780 [debug] Fetching recent media IDs from YouTube API for playlist: UUSHvlfXUGYGWmDBg-afA5Bg 13:12:13.780 [debug] QUERY OK source="settings" db=0.3ms idle=3.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:12:13.780 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 13:12:14.116 [debug] QUERY OK source="media_items" db=2.8ms idle=335.7ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND m0."media_id" IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [23, "QASZbKPkS08", "pr7MMAFzHe8", "DG0BSdc6kKg", "o7DJZCU8q34", "G5A2QGwRmS4", "PER4GK9LCTA", "GzIS1WZFKtc", "24P4MFV-HrM", "6x6df3uagb4", "vALU9LhFKhE", "KF1grNBv5hU", "SLSPmp8-tXE", "53liPfHBgYQ", "zykmoM0qjbA", "boyfPk5qdBM", "H2VYuo7yb2o", "75_mYLpHDr4", "PSnlGB9aKVI", "vFBFSi2XqrQ", "X2z1ugOwR2A", "ePV6FKD1J9U", "ipxj_tl_6XY", "6l9-ctzSbCo", "xu3DTyCW3Yk", "wpAt0QaSk7U", "NXy9Sg0KIMY", "ml5AG_Q0y6w", "h_Uq6-e06y8", "37_rLteuwG4", "QCbf0kOJ8lA"] 13:12:14.119 [debug] QUERY OK source="media_items" db=1.5ms idle=339.2ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [23] 13:12:14.122 [debug] QUERY OK source="tasks" db=0.5ms idle=341.4ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [202940, 23, ~U[2026-01-03 02:12:14Z], ~U[2026-01-03 02:12:14Z]] 13:12:14.123 [info] {"args":{"id":23},"id":202916,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":346279,"event":"job:stop","queue_time":532537,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 13:12:14.778 [info] {"args":{"id":25},"id":202917,"meta":{},"system_time":1767406334777963121,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 13:12:14.778 [debug] QUERY OK source="sources" db=0.3ms queue=0.1ms idle=655.7ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [25] 13:12:14.779 [debug] QUERY OK source="settings" db=0.2ms idle=655.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:12:14.780 [debug] QUERY OK source="media_profiles" db=0.2ms idle=649.1ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:12:14.780 [debug] QUERY OK source="settings" db=0.4ms idle=8.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:12:14.780 [debug] Fetching recent media IDs from YouTube API for playlist: UUWstkeBSSIEgw6n5qnlXXuA 13:12:14.781 [debug] QUERY OK source="settings" db=0.5ms idle=3.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:12:14.781 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 13:12:15.102 [debug] QUERY OK source="media_items" db=1.3ms idle=321.9ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND m0."media_id" IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [25, "_sYSZI--9TA", "T7P86y4vYKs", "qWpf9ysgE04", "81v7r86tRRE", "a3LYS6jzPKA", "o5UKHwwdhmA", "6CCxzLKCHYA", "VONzFNo8uW4", "jJUysp-6qBs", "3KzmAquL3e4", "5cgK_MdFz7s", "bHpsXfutTFY", "kVhFNQj86Ng", "nyd40ZDhRw4"] 13:12:15.105 [debug] QUERY OK source="media_items" db=1.0ms queue=0.1ms idle=324.9ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [25] 13:12:15.109 [debug] QUERY OK source="tasks" db=0.7ms idle=327.0ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [202941, 25, ~U[2026-01-03 02:12:15Z], ~U[2026-01-03 02:12:15Z]] 13:12:15.111 [info] {"args":{"id":25},"id":202917,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":331801,"event":"job:stop","queue_time":569942,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 13:12:15.785 [info] {"args":{"id":17},"id":202918,"meta":{},"system_time":1767406335785593125,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 13:12:15.786 [debug] QUERY OK source="sources" db=0.8ms idle=676.4ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [17] 13:12:15.787 [debug] QUERY OK source="settings" db=0.6ms idle=675.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:12:15.789 [debug] QUERY OK source="media_profiles" db=0.9ms idle=666.7ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:12:15.789 [debug] QUERY OK source="settings" db=0.5ms idle=11.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:12:15.790 [debug] Fetching recent media IDs from YouTube API for playlist: UUEIwxahdLz7bap-VDs9h35A 13:12:15.790 [debug] QUERY OK source="settings" db=0.3ms idle=4.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:12:15.790 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 13:12:16.159 [debug] QUERY OK source="media_items" db=5.3ms idle=366.9ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND m0."media_id" IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [17, "kuMUquaeE6g", "-NzfTE8RI4w", "2eiYALLYBFE", "J_vXK9uvRf4", "tRDxBwverlI", "ymlNErMdI2k", "hM1l19H0tX8", "qg01MgiVT9k", "a3l6FdpltbQ", "NtZaP8VMv0c", "ayicYezINas", "zoTuSOEOvPw", "U7NHNT3M-tw", "B_PCZiNlmPw", "5glksNTKkZI", "iDsb-pxE3fA", "7PJi9KSDVbQ", "CfhsW1kaa2Q", "pleHURTV6fU", "T47s4L1Wje4", "LLlghvxVoH0", "K4542wtX8B4", "rf-efIZI_Dg", "OXvdwc6NDqM", "nGEHUbTtpPY", "0FybegjTkgw", "3TgdCWBV0pg", "Qjd4CREfYbo", "pqnyUemUDF4", "6-FQSEVc_cs", "BvoDuNZ9gLA", "AjJfefo41M8", "dJSGJ1-9XWw", "Mcg9GcilBfU", "MQSwyrjTV2M", "o-dZKBwbsis", "matUCqoiSGk", "0_VdGzEk5-M", "PAOpkv0fpik", "VdwSMytC7y4", "tw5tQPm-B00", "vkD3-msLIHg", "INq7pAmaUuk", "mfTVxFapdLw", "kY2YeM5fNDw", "lkWRiks6luc", "yiCM_i8r4RM", "XzBMFsZT5gM", "dKN6XatdVkY", ...] 13:12:16.167 [debug] QUERY OK source="media_items" db=5.7ms idle=373.5ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [17] 13:12:16.171 [debug] QUERY OK source="tasks" db=0.9ms idle=380.2ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [202942, 17, ~U[2026-01-03 02:12:16Z], ~U[2026-01-03 02:12:16Z]] 13:12:16.172 [info] {"args":{"id":17},"id":202918,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":386334,"event":"job:stop","queue_time":522145,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 13:12:42.564 [info] {"source":"oban","duration":4156,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:13:00.134 [info] {"source":"oban","duration":459,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 13:13:01.786 [info] GET /sources/22/media/21296/force_download 13:13:01.787 [debug] QUERY OK source="settings" db=0.3ms idle=1974.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:13:01.787 [debug] QUERY OK source="settings" db=0.3ms idle=1975.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:13:01.787 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 13:13:01.788 [error] #PID<0.9580.0> running PinchflatWeb.Endpoint (connection #PID<0.9579.0>, stream id 1) terminated Server: pinchflat.uiau7e.uncld.dev:80 (http) Request: GET /sources/22/media/21296/force_download ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/22/media/21296/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.9579.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/22/media/21296/force_download", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 55920}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "from" => "gptbot(at)openai.com", "host" => "pinchflat.uiau7e.uncld.dev", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.3; +https://openai.com/gptbot)", "via" => "2.0 Caddy", "x-forwarded-for" => "74.7.227.183", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https", "x-openai-host-hash" => "454925582" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.uiau7e.uncld.dev", method: "GET", owner: #PID<0.9580.0>, params: %{}, path_info: ["sources", "22", "media", "21296", "force_download"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.uiau7e.uncld.dev", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {10, 210, 0, 2}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"accept-encoding", "gzip, br, deflate"}, {"from", "gptbot(at)openai.com"}, {"host", "pinchflat.uiau7e.uncld.dev"}, {"user-agent", "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.3; +https://openai.com/gptbot)"}, {"via", "2.0 Caddy"}, {"x-forwarded-for", "74.7.227.183"}, {"x-forwarded-host", "pinchflat.uiau7e.uncld.dev"}, {"x-forwarded-proto", "https"}, {"x-openai-host-hash", "454925582"} ], request_path: "/sources/22/media/21296/force_download", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GIcWvXge_GZqXBYAALBi"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.9579.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/22/media/21296/force_download", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 55920}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "from" => "gptbot(at)openai.com", "host" => "pinchflat.uiau7e.uncld.dev", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.3; +https://openai.com/gptbot)", "via" => "2.0 Caddy", "x-forwarded-for" => "74.7.227.183", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https", "x-openai-host-hash" => "454925582" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/22/media/21296/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.9579.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/22/media/21296/force_download", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 55920}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "from" => "gptbot(at)openai.com", "host" => "pinchflat.uiau7e.uncld.dev", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.3; +https://openai.com/gptbot)", "via" => "2.0 Caddy", "x-forwarded-for" => "74.7.227.183", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https", "x-openai-host-hash" => "454925582" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.uiau7e.uncld.dev", method: "GET", owner: #PID<0.9580.0>, params: %{}, path_info: ["sources", "22", "media", "21296", "force_download"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.uiau7e.uncld.dev", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {10, 210, 0, 2}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"accept-encoding" (truncated) 13:13:07.963 [info] {"args":{"id":58546},"id":201954,"meta":{},"system_time":1767406387962996580,"max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","event":"job:start","attempt":8,"tags":["media_item","media_fetching","show_in_dashboard"]} 13:13:07.964 [debug] QUERY OK source="media_items" db=0.4ms idle=1012.8ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [58546] 13:13:07.964 [info] User scripts lifecyle file either not present or is empty. Skipping. 13:13:07.965 [debug] QUERY OK source="sources" db=0.4ms idle=152.8ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [5] 13:13:07.967 [debug] QUERY OK source="media_profiles" db=1.1ms idle=153.5ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:13:07.968 [debug] QUERY OK source="media_items" db=1.2ms idle=11.9ms SELECT 1 FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) LIMIT 1 [58546] 13:13:07.970 [debug] QUERY OK source="media_metadata" db=0.4ms idle=7.4ms SELECT m0."id", m0."metadata_filepath", m0."thumbnail_filepath", m0."media_item_id", m0."inserted_at", m0."updated_at", m0."media_item_id" FROM "media_metadata" AS m0 WHERE (m0."media_item_id" = ?) [58546] 13:13:07.971 [debug] QUERY OK source="media_profiles" db=0.2ms idle=6.4ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:13:07.971 [debug] QUERY OK source="settings" db=0.3ms idle=6.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:13:07.972 [debug] QUERY OK source="settings" db=0.1ms idle=4.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:13:07.972 [debug] Running yt-dlp command for action: get_downloadable_status 13:13:07.974 [debug] QUERY OK source="settings" db=0.3ms idle=5.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:13:07.974 [debug] QUERY OK source="settings" db=0.3ms idle=3.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:13:07.975 [debug] QUERY OK source="settings" db=0.3ms idle=3.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:13:07.975 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=CcUb7Ky2oSI --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/fc/0a/fc0aa515817cb8f75f99c62ca2670ad952af387f43ba4963d2888e9e7a459f51.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 13:13:12.568 [info] {"source":"oban","duration":3182,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:13:14.972 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=CcUb7Ky2oSI --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/fc/0a/fc0aa515817cb8f75f99c62ca2670ad952af387f43ba4963d2888e9e7a459f51.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 13:13:14.972 [debug] Running yt-dlp command for action: download 13:13:14.973 [debug] QUERY OK source="settings" db=0.4ms idle=1160.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:13:14.974 [debug] QUERY OK source="settings" db=0.3ms idle=1161.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:13:14.974 [debug] QUERY OK source="settings" db=0.2ms idle=1162.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:13:14.975 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=CcUb7Ky2oSI --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --embed-subs --sub-langs en --write-thumbnail --convert-thumbnail jpg --output thumbnail:/downloads/CodeSync/Season %(upload_date>%Y)S/s%(upload_date>%Y)Se%(upload_date>%m%d)S99 - %(title)S-thumb.%(ext)S --embed-thumbnail --convert-thumbnail jpg --write-info-json --clean-info-json --embed-metadata --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --sponsorblock-mark sponsor,intro,outro,selfpromo,preview,filler,interaction,music_offtopic --output /downloads/CodeSync/Season %(upload_date>%Y)S/s%(upload_date>%Y)Se%(upload_date>%m%d)S99 - %(title)S.%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/b1/e3/b1e3f0fa9e2f6756d6bb7653d647730d4515646932ea9e347bc4c3a58bf598dc.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 13:13:23.620 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=CcUb7Ky2oSI --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --embed-subs --sub-langs en --write-thumbnail --convert-thumbnail jpg --output thumbnail:/downloads/CodeSync/Season %(upload_date>%Y)S/s%(upload_date>%Y)Se%(upload_date>%m%d)S99 - %(title)S-thumb.%(ext)S --embed-thumbnail --convert-thumbnail jpg --write-info-json --clean-info-json --embed-metadata --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --sponsorblock-mark sponsor,intro,outro,selfpromo,preview,filler,interaction,music_offtopic --output /downloads/CodeSync/Season %(upload_date>%Y)S/s%(upload_date>%Y)Se%(upload_date>%m%d)S99 - %(title)S.%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/b1/e3/b1e3f0fa9e2f6756d6bb7653d647730d4515646932ea9e347bc4c3a58bf598dc.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 1 with: WARNING: The extractor specified to use impersonation for this download, but no impersonate target is available. If you encounter errors, then see https://github.com/yt-dlp/yt-dlp#impersonation for information on installing the required dependencies ERROR: Unable to download video subtitles for 'en': HTTP Error 429: Too Many Requests 13:13:23.620 [error] yt-dlp download error for media item #58546: "WARNING: The extractor specified to use impersonation for this download, but no impersonate target is available. If you encounter errors, then see https://github.com/yt-dlp/yt-dlp#impersonation for information on installing the required dependencies\nERROR: Unable to download video subtitles for 'en': HTTP Error 429: Too Many Requests\n" 13:13:23.623 [debug] QUERY OK source="media_items" db=2.3ms idle=1624.8ms UPDATE "media_items" SET "last_error" = ?, "updated_at" = ? WHERE "id" = ? ["WARNING: The extractor specified to use impersonation for this download, but no impersonate target is available. If you encounter errors, then see https://github.com/yt-dlp/yt-dlp#impersonation for information on installing the required dependencies\nERROR: Unable to download video subtitles for 'en': HTTP Error 429: Too Many Requests\n", ~U[2026-01-03 02:13:23Z], 58546] 13:13:23.625 [info] {"error":"** (Oban.PerformError) Pinchflat.Downloading.MediaDownloadWorker failed with {:error, :download_failed}","args":{"id":58546},"id":201954,"meta":{},"state":"failure","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":15660720,"event":"job:exception","queue_time":860851,"attempt":8,"tags":["media_item","media_fetching","show_in_dashboard"]} 13:13:42.571 [info] {"source":"oban","duration":2842,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:13:43.054 [info] {"args":{"id":7},"id":202923,"meta":{},"system_time":1767406423054389291,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 13:13:43.055 [debug] QUERY OK source="sources" db=0.4ms queue=0.1ms idle=243.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [7] 13:13:43.056 [debug] QUERY OK source="settings" db=0.3ms idle=244.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:13:43.057 [debug] QUERY OK source="media_profiles" db=0.3ms queue=0.1ms idle=244.9ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:13:43.058 [debug] QUERY OK source="settings" db=0.3ms idle=10.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:13:43.058 [debug] Fetching recent media IDs from YouTube API for playlist: UUwnKziETDbHJtx78nIkfYug 13:13:43.059 [debug] QUERY OK source="settings" db=0.2ms idle=4.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:13:43.059 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 13:13:43.401 [debug] QUERY OK source="media_items" db=3.9ms idle=341.6ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND m0."media_id" IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [7, "mC5NdpSMDks", "ccV3u3D9ONE", "cVCDjEfPzII", "n0X2rqzKTgM", "dcuCvRNqmpY", "GG1qX8jHKGo", "k9wkleHFvo0", "CWoYVlMuUNQ", "xlfeieH4z38", "eZM2Ik-FHEU", "CtcTG8-qzbA", "6Mmj7mf1qlg", "InwVO9qBjqs", "1Hp-W2bpPrw", "VtE5sTpkn7k", "8dOJypt2F70", "Evm4t4prtWo", "taLzgvbrnv0", "rgCrnyf5JEI", "PHhc-48JT3U", "vFKjpNNjNGw", "VJQlOI70ubw", "E5cfNq0DO90", "DNBGSsZatbY", "pna1NyaHTls", "CUHao-vA98g", "cPN9BJe_RQw", "rCBt4XgCX-0", "f4g6KKGMmEI", "P_I5Jsc3xRw", "fPaU2l7RktM", "0PVwt01b6fs", "0qMDM4Y4Hwo", "Ld285PDsHvs", "p1mQC71wplA", "9k5JhKK6WlA", "WPxrifmtlQI", "nVNBmK7a1y8", "QDnMYztaxfI", "gxsaWhXG1Gg", "RMtkKiyrXic", "JKlJ6OW67Bk", "Sjmb8O-fRWI", "qZhD4G7ENSY", "OTWDzMjgsEY", "Y_eCu_pW6-4", "DplgNsjOPRg", "l6hHI3AVoYM", "joAhvj7dfsc", ...] 13:13:43.411 [debug] QUERY OK source="media_items" db=8.7ms idle=346.4ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [7] 13:13:43.420 [debug] QUERY OK source="tasks" db=0.9ms idle=359.7ms INSERT INTO "tasks" ("job_id","media_item_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [202943, 8350, ~U[2026-01-03 02:13:43Z], ~U[2026-01-03 02:13:43Z]] 13:13:43.427 [info] {"args":{"id":8350},"id":202943,"meta":{},"system_time":1767406423427269076,"max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 13:13:43.428 [debug] QUERY OK source="media_items" db=0.4ms idle=9.3ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [8350] 13:13:43.428 [info] User scripts lifecyle file either not present or is empty. Skipping. 13:13:43.429 [debug] QUERY OK source="sources" db=0.4ms idle=3.9ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [7] 13:13:43.429 [debug] QUERY OK source="tasks" db=0.9ms idle=8.7ms INSERT INTO "tasks" ("job_id","media_item_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [202944, 8380, ~U[2026-01-03 02:13:43Z], ~U[2026-01-03 02:13:43Z]] 13:13:43.430 [debug] QUERY OK source="media_profiles" db=0.3ms queue=0.2ms idle=2.4ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:13:43.431 [debug] QUERY OK source="media_items" db=0.4ms idle=2.1ms SELECT 1 FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) LIMIT 1 [8350] 13:13:43.432 [debug] QUERY OK source="media_metadata" db=0.1ms idle=2.8ms SELECT m0."id", m0."metadata_filepath", m0."thumbnail_filepath", m0."media_item_id", m0."inserted_at", m0."updated_at", m0."media_item_id" FROM "media_metadata" AS m0 WHERE (m0."media_item_id" = ?) [8350] 13:13:43.433 [debug] QUERY OK source="media_profiles" db=0.5ms idle=2.6ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:13:43.434 [debug] QUERY OK source="tasks" db=1.0ms idle=2.2ms INSERT INTO "tasks" ("job_id","media_item_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [202945, 8401, ~U[2026-01-03 02:13:43Z], ~U[2026-01-03 02:13:43Z]] 13:13:43.434 [debug] QUERY OK source="settings" db=0.3ms queue=0.1ms idle=1.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:13:43.436 [debug] QUERY OK source="settings" db=1.7ms idle=1.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:13:43.436 [info] {"args":{"id":8380},"id":202944,"meta":{},"system_time":1767406423436744540,"max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 13:13:43.437 [debug] Running yt-dlp command for action: get_downloadable_status 13:13:43.438 [debug] QUERY OK source="media_items" db=1.6ms queue=0.1ms idle=2.8ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [8380] 13:13:43.441 [debug] QUERY OK source="tasks" db=0.7ms idle=3.7ms INSERT INTO "tasks" ("job_id","media_item_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [202946, 8418, ~U[2026-01-03 02:13:43Z], ~U[2026-01-03 02:13:43Z]] 13:13:43.446 [info] User scripts lifecyle file either not present or is empty. Skipping. 13:13:43.446 [debug] QUERY OK source="tasks" db=1.0ms queue=0.1ms idle=6.6ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [202947, 7, ~U[2026-01-03 02:13:43Z], ~U[2026-01-03 02:13:43Z]] 13:13:43.447 [debug] QUERY OK source="sources" db=0.9ms queue=0.1ms idle=6.8ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [7] 13:13:43.447 [debug] QUERY OK source="settings" db=0.2ms idle=3.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:13:43.448 [info] {"args":{"id":7},"id":202923,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":392500,"event":"job:stop","queue_time":486682,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 13:13:43.448 [debug] QUERY OK source="settings" db=0.7ms idle=2.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:13:43.449 [debug] QUERY OK source="media_profiles" db=1.1ms idle=1.1ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:13:43.450 [debug] QUERY OK source="settings" db=1.3ms idle=1.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:13:43.450 [debug] QUERY OK source="media_items" db=0.9ms idle=1.7ms SELECT 1 FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) LIMIT 1 [8380] 13:13:43.450 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=aCES82xfgdw --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/1b/c1/1bc15cc68a898e2bfcc9720ff6802a0f4507f8bf98b3018c29d4129533a753d2.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 13:13:43.452 [debug] QUERY OK source="media_metadata" db=0.2ms idle=3.8ms SELECT m0."id", m0."metadata_filepath", m0."thumbnail_filepath", m0."media_item_id", m0."inserted_at", m0."updated_at", m0."media_item_id" FROM "media_metadata" AS m0 WHERE (m0."media_item_id" = ?) [8380] 13:13:43.452 [debug] QUERY OK source="media_profiles" db=0.4ms idle=3.6ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:13:43.453 [debug] QUERY OK source="settings" db=0.3ms idle=3.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:13:43.454 [debug] QUERY OK source="settings" db=0.4ms idle=3.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:13:43.454 [debug] Running yt-dlp command for action: get_downloadable_status 13:13:43.456 [debug] QUERY OK source="settings" db=0.2ms idle=3.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:13:43.456 [debug] QUERY OK source="settings" db=0.2ms idle=3.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:13:43.456 [debug] QUERY OK source="settings" db=0.2ms idle=3.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:13:43.457 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=bhkmFO8DikY --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/f8/8e/f88e7a221d5254567345210d4adcbd5e7fdf006e19b940d5b49d653f0babc6e9.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 13:13:48.860 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=bhkmFO8DikY --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/f8/8e/f88e7a221d5254567345210d4adcbd5e7fdf006e19b940d5b49d653f0babc6e9.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 1 with: ERROR: [youtube] bhkmFO8DikY: Sign in to confirm your age. This video may be inappropriate for some users. Use --cookies-from-browser or --cookies for the authentication. See https://github.com/yt-dlp/yt-dlp/wiki/FAQ#how-do-i-pass-cookies-to-yt-dlp for how to manually pass cookies. Also see https://github.com/yt-dlp/yt-dlp/wiki/Extractors#exporting-youtube-cookies for tips on effectively exporting YouTube cookies 13:13:48.861 [debug] QUERY OK source="settings" db=0.6ms idle=792.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:13:48.862 [debug] QUERY OK source="settings" db=0.5ms idle=49.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:13:48.863 [debug] Running yt-dlp command for action: get_downloadable_status 13:13:48.867 [debug] QUERY OK source="settings" db=0.5ms idle=54.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:13:48.868 [debug] QUERY OK source="settings" db=0.8ms idle=55.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:13:48.868 [debug] QUERY OK source="settings" db=0.2ms idle=56.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:13:48.869 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=bhkmFO8DikY --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/4b/bb/4bbb83f044fcadc5193367c9e2fc5bab45827046b1d83977cd19d2e47947999c.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 13:13:49.002 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=aCES82xfgdw --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/1b/c1/1bc15cc68a898e2bfcc9720ff6802a0f4507f8bf98b3018c29d4129533a753d2.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 1 with: ERROR: [youtube] aCES82xfgdw: Sign in to confirm your age. This video may be inappropriate for some users. Use --cookies-from-browser or --cookies for the authentication. See https://github.com/yt-dlp/yt-dlp/wiki/FAQ#how-do-i-pass-cookies-to-yt-dlp for how to manually pass cookies. Also see https://github.com/yt-dlp/yt-dlp/wiki/Extractors#exporting-youtube-cookies for tips on effectively exporting YouTube cookies 13:13:49.004 [debug] QUERY OK source="settings" db=0.2ms queue=0.1ms idle=141.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:13:49.005 [debug] QUERY OK source="settings" db=0.3ms idle=141.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:13:49.006 [debug] Running yt-dlp command for action: get_downloadable_status 13:13:49.007 [debug] QUERY OK source="settings" db=0.1ms idle=140.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:13:49.008 [debug] QUERY OK source="settings" db=0.3ms idle=139.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:13:49.008 [debug] QUERY OK source="settings" db=0.5ms idle=139.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:13:49.009 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=aCES82xfgdw --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/0c/2b/0c2b9bb9679c8098f37c269f5dff24727a262f5f4184e66771745d1c326be091.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 13:13:51.085 [info] {"args":{"id":24},"id":202924,"meta":{},"system_time":1767406431085504123,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 13:13:51.087 [debug] QUERY OK source="sources" db=0.9ms idle=273.7ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [24] 13:13:51.088 [debug] QUERY OK source="settings" db=0.7ms idle=275.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:13:51.089 [debug] QUERY OK source="media_profiles" db=1.0ms idle=276.0ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:13:51.090 [debug] QUERY OK source="settings" db=0.7ms idle=11.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:13:51.090 [debug] Fetching recent media IDs from YouTube API for playlist: UUNTjSZfAK117b2kFGNCJfdA 13:13:51.091 [debug] QUERY OK source="settings" db=0.4ms idle=5.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:13:51.091 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 13:13:51.484 [debug] QUERY OK source="media_items" db=5.3ms queue=0.1ms idle=391.0ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND m0."media_id" IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [24, "2J48c2sukbo", "zq9gpqgWFv8", "EWdphas_OP4", "-U2sQ3e3R-0", "XdytKwHuG_8", "t-hori2Io14", "Xbemvi42Ngs", "91m4MQw_sZI", "GfUIbPqAMQs", "4VpVt3zdvL8", "q6Kd5C7O-F8", "EV6DSqTOXM0", "mMvfBUNNKIY", "C215grXAMCk", "_x6TE7hbE1k", "vycMxLco0a0", "lJWhisaNv8E", "4Blxc8mVzQs", "ztqcWc5aaks", "0Dvn039qD8I", "Vx69evZOEAE", "4dzZ44-xVds", "Rews5WNxiNk", "f-BFFWzh9uE", "RfJSMWHO0tY", "gMeUOURvDP8", "LEiL1np9sSM", "F-QeDtQ8Gy4", "9FSIF281OAo", "Shav52BfzWk", "dsCfQ3y5tHQ", "0rpt5sMb7cw", "Fe7Y152ak3Y", "HEuablkqrCg", "BRUTYHBJ_Z4", "gpaV4bgEG-g", "ppjFdEbIS4g", "lEhEMRA17bg", "tpIXmmV4ib4", "LBYQ_NLVKCw", "JsdM3k3QiPc", "TNmSVjGyZx0", "OMVYZziNjhc", "uyfyFRvng3c", "YFBg5NNEW4g", "IkZe4pXDv0k", "ZT0in30U-ug", "kqDqSLOuxmM", "ZgLsNSWN46o", ...] 13:13:51.490 [debug] QUERY OK source="media_items" db=1.2ms queue=0.1ms idle=400.5ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [24] 13:13:51.495 [debug] QUERY OK source="tasks" db=1.0ms idle=402.9ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [202948, 24, ~U[2026-01-03 02:13:51Z], ~U[2026-01-03 02:13:51Z]] 13:13:51.496 [info] {"args":{"id":24},"id":202924,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":409939,"event":"job:stop","queue_time":485516,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 13:13:54.165 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=bhkmFO8DikY --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/4b/bb/4bbb83f044fcadc5193367c9e2fc5bab45827046b1d83977cd19d2e47947999c.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 1 with: ERROR: [youtube] bhkmFO8DikY: Sign in to confirm your age. This video may be inappropriate for some users. Use --cookies-from-browser or --cookies for the authentication. See https://github.com/yt-dlp/yt-dlp/wiki/FAQ#how-do-i-pass-cookies-to-yt-dlp for how to manually pass cookies. Also see https://github.com/yt-dlp/yt-dlp/wiki/Extractors#exporting-youtube-cookies for tips on effectively exporting YouTube cookies 13:13:54.165 [error] yt-dlp download error for media item #8380: "ERROR: [youtube] bhkmFO8DikY: Sign in to confirm your age. This video may be inappropriate for some users. Use --cookies-from-browser or --cookies for the authentication. See https://github.com/yt-dlp/yt-dlp/wiki/FAQ#how-do-i-pass-cookies-to-yt-dlp for how to manually pass cookies. Also see https://github.com/yt-dlp/yt-dlp/wiki/Extractors#exporting-youtube-cookies for tips on effectively exporting YouTube cookies\n" 13:13:54.166 [error] yt-dlp download will not be retried: "ERROR: [youtube] bhkmFO8DikY: Sign in to confirm your age. This video may be inappropriate for some users. Use --cookies-from-browser or --cookies for the authentication. See https://github.com/yt-dlp/yt-dlp/wiki/FAQ#how-do-i-pass-cookies-to-yt-dlp for how to manually pass cookies. Also see https://github.com/yt-dlp/yt-dlp/wiki/Extractors#exporting-youtube-cookies for tips on effectively exporting YouTube cookies\n" 13:13:54.167 [info] {"args":{"id":8380},"id":202944,"meta":{},"state":"success","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":10729419,"event":"job:stop","queue_time":435143,"attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 13:13:54.174 [info] {"args":{"id":8401},"id":202945,"meta":{},"system_time":1767406434174395699,"max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 13:13:54.176 [debug] QUERY OK source="media_items" db=0.7ms queue=0.5ms idle=1362.9ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [8401] 13:13:54.176 [info] User scripts lifecyle file either not present or is empty. Skipping. 13:13:54.177 [debug] QUERY OK source="sources" db=0.4ms queue=0.2ms idle=1092.1ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [7] 13:13:54.178 [debug] QUERY OK source="media_profiles" db=0.3ms idle=87.0ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:13:54.179 [debug] QUERY OK source="media_items" db=0.5ms idle=11.8ms SELECT 1 FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) LIMIT 1 [8401] 13:13:54.181 [debug] QUERY OK source="media_metadata" db=0.2ms idle=6.6ms SELECT m0."id", m0."metadata_filepath", m0."thumbnail_filepath", m0."media_item_id", m0."inserted_at", m0."updated_at", m0."media_item_id" FROM "media_metadata" AS m0 WHERE (m0."media_item_id" = ?) [8401] 13:13:54.181 [debug] QUERY OK source="media_profiles" db=0.5ms idle=5.0ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:13:54.182 [debug] QUERY OK source="settings" db=0.1ms idle=4.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:13:54.182 [debug] QUERY OK source="settings" db=0.2ms idle=4.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:13:54.183 [debug] Running yt-dlp command for action: get_downloadable_status 13:13:54.185 [debug] QUERY OK source="settings" db=0.4ms idle=5.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:13:54.186 [debug] QUERY OK source="settings" db=0.6ms idle=4.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:13:54.186 [debug] QUERY OK source="settings" db=0.3ms queue=0.1ms idle=4.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:13:54.187 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=ZWSj0M132e8 --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/0f/ca/0fcacade0113ee9ff45a41d0e041f3c1e66e52228399a541375a53ddd0a216f2.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 13:13:54.436 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=aCES82xfgdw --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/0c/2b/0c2b9bb9679c8098f37c269f5dff24727a262f5f4184e66771745d1c326be091.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 1 with: ERROR: [youtube] aCES82xfgdw: Sign in to confirm your age. This video may be inappropriate for some users. Use --cookies-from-browser or --cookies for the authentication. See https://github.com/yt-dlp/yt-dlp/wiki/FAQ#how-do-i-pass-cookies-to-yt-dlp for how to manually pass cookies. Also see https://github.com/yt-dlp/yt-dlp/wiki/Extractors#exporting-youtube-cookies for tips on effectively exporting YouTube cookies 13:13:54.436 [error] yt-dlp download error for media item #8350: "ERROR: [youtube] aCES82xfgdw: Sign in to confirm your age. This video may be inappropriate for some users. Use --cookies-from-browser or --cookies for the authentication. See https://github.com/yt-dlp/yt-dlp/wiki/FAQ#how-do-i-pass-cookies-to-yt-dlp for how to manually pass cookies. Also see https://github.com/yt-dlp/yt-dlp/wiki/Extractors#exporting-youtube-cookies for tips on effectively exporting YouTube cookies\n" 13:13:54.437 [error] yt-dlp download will not be retried: "ERROR: [youtube] aCES82xfgdw: Sign in to confirm your age. This video may be inappropriate for some users. Use --cookies-from-browser or --cookies for the authentication. See https://github.com/yt-dlp/yt-dlp/wiki/FAQ#how-do-i-pass-cookies-to-yt-dlp for how to manually pass cookies. Also see https://github.com/yt-dlp/yt-dlp/wiki/Extractors#exporting-youtube-cookies for tips on effectively exporting YouTube cookies\n" 13:13:54.438 [info] {"args":{"id":8350},"id":202943,"meta":{},"state":"success","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":11010198,"event":"job:stop","queue_time":424977,"attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 13:13:54.446 [info] {"args":{"id":8418},"id":202946,"meta":{},"system_time":1767406434446186591,"max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 13:13:54.447 [debug] QUERY OK source="media_items" db=0.4ms queue=0.1ms idle=261.3ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [8418] 13:13:54.447 [info] User scripts lifecyle file either not present or is empty. Skipping. 13:13:54.448 [debug] QUERY OK source="sources" db=0.5ms queue=0.1ms idle=261.8ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [7] 13:13:54.449 [debug] QUERY OK source="media_profiles" db=0.3ms queue=0.1ms idle=262.2ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:13:54.450 [debug] QUERY OK source="media_items" db=0.4ms idle=12.1ms SELECT 1 FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) LIMIT 1 [8418] 13:13:54.452 [debug] QUERY OK source="media_metadata" db=0.2ms idle=6.2ms SELECT m0."id", m0."metadata_filepath", m0."thumbnail_filepath", m0."media_item_id", m0."inserted_at", m0."updated_at", m0."media_item_id" FROM "media_metadata" AS m0 WHERE (m0."media_item_id" = ?) [8418] 13:13:54.453 [debug] QUERY OK source="media_profiles" db=0.2ms idle=5.3ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:13:54.454 [debug] QUERY OK source="settings" db=0.1ms idle=5.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:13:54.454 [debug] QUERY OK source="settings" db=0.1ms idle=4.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:13:54.455 [debug] Running yt-dlp command for action: get_downloadable_status 13:13:54.456 [debug] QUERY OK source="settings" db=0.4ms idle=5.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:13:54.457 [debug] QUERY OK source="settings" db=0.2ms idle=4.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:13:54.457 [debug] QUERY OK source="settings" db=0.2ms queue=0.1ms idle=4.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:13:54.458 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=v6jHhzj08yQ --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/38/97/38979bef335af6d6af607df0bfb085c4c0666c420577d95d794fc1f9e52b9e20.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 13:13:59.510 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=ZWSj0M132e8 --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/0f/ca/0fcacade0113ee9ff45a41d0e041f3c1e66e52228399a541375a53ddd0a216f2.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 1 with: ERROR: [youtube] ZWSj0M132e8: Sign in to confirm your age. This video may be inappropriate for some users. Use --cookies-from-browser or --cookies for the authentication. See https://github.com/yt-dlp/yt-dlp/wiki/FAQ#how-do-i-pass-cookies-to-yt-dlp for how to manually pass cookies. Also see https://github.com/yt-dlp/yt-dlp/wiki/Extractors#exporting-youtube-cookies for tips on effectively exporting YouTube cookies 13:13:59.511 [debug] QUERY OK source="settings" db=0.6ms queue=0.1ms idle=1697.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:13:59.512 [debug] QUERY OK source="settings" db=0.5ms idle=1698.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:13:59.513 [debug] Running yt-dlp command for action: get_downloadable_status 13:13:59.515 [debug] QUERY OK source="settings" db=0.4ms idle=1702.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:13:59.516 [debug] QUERY OK source="settings" db=0.2ms idle=1410.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:13:59.516 [debug] QUERY OK source="settings" db=0.1ms idle=408.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:13:59.516 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=ZWSj0M132e8 --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/86/bd/86bdcd59ea7925b7d560c2bb7e6c6689ed0876ba1f668bb8f5e9b11354f6606c.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 13:13:59.896 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=v6jHhzj08yQ --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/38/97/38979bef335af6d6af607df0bfb085c4c0666c420577d95d794fc1f9e52b9e20.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 1 with: ERROR: [youtube] v6jHhzj08yQ: Sign in to confirm your age. This video may be inappropriate for some users. Use --cookies-from-browser or --cookies for the authentication. See https://github.com/yt-dlp/yt-dlp/wiki/FAQ#how-do-i-pass-cookies-to-yt-dlp for how to manually pass cookies. Also see https://github.com/yt-dlp/yt-dlp/wiki/Extractors#exporting-youtube-cookies for tips on effectively exporting YouTube cookies 13:13:59.897 [debug] QUERY OK source="settings" db=0.3ms queue=0.1ms idle=385.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:13:59.898 [debug] QUERY OK source="settings" db=0.4ms idle=385.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:13:59.899 [debug] Running yt-dlp command for action: get_downloadable_status 13:13:59.901 [debug] QUERY OK source="settings" db=0.2ms idle=384.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:13:59.901 [debug] QUERY OK source="settings" db=0.2ms queue=0.1ms idle=385.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:13:59.902 [debug] QUERY OK source="settings" db=0.2ms idle=385.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:13:59.902 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=v6jHhzj08yQ --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/d3/26/d3262a101af1e5390b73dcf8ff4a4efc08c8f56f8f7b1402ff3aba36e29ae889.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 13:14:00.136 [info] {"source":"oban","duration":601,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 13:14:04.390 [info] GET /sources/11/media/58565/force_download 13:14:04.392 [debug] QUERY OK source="settings" db=0.4ms idle=578.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:14:04.392 [debug] QUERY OK source="settings" db=0.4ms idle=579.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:14:04.393 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 13:14:04.393 [error] #PID<0.9607.0> running PinchflatWeb.Endpoint (connection #PID<0.9606.0>, stream id 1) terminated Server: pinchflat.uiau7e.uncld.dev:80 (http) Request: GET /sources/11/media/58565/force_download ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/11/media/58565/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.9606.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/11/media/58565/force_download", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 35960}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "from" => "gptbot(at)openai.com", "host" => "pinchflat.uiau7e.uncld.dev", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.3; +https://openai.com/gptbot)", "via" => "2.0 Caddy", "x-forwarded-for" => "74.7.227.183", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https", "x-openai-host-hash" => "454925582" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.uiau7e.uncld.dev", method: "GET", owner: #PID<0.9607.0>, params: %{}, path_info: ["sources", "11", "media", "58565", "force_download"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.uiau7e.uncld.dev", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {10, 210, 0, 2}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"accept-encoding", "gzip, br, deflate"}, {"from", "gptbot(at)openai.com"}, {"host", "pinchflat.uiau7e.uncld.dev"}, {"user-agent", "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.3; +https://openai.com/gptbot)"}, {"via", "2.0 Caddy"}, {"x-forwarded-for", "74.7.227.183"}, {"x-forwarded-host", "pinchflat.uiau7e.uncld.dev"}, {"x-forwarded-proto", "https"}, {"x-openai-host-hash", "454925582"} ], request_path: "/sources/11/media/58565/force_download", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GIcWzAunvVmt-aYAALGC"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.9606.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/11/media/58565/force_download", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 35960}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "from" => "gptbot(at)openai.com", "host" => "pinchflat.uiau7e.uncld.dev", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.3; +https://openai.com/gptbot)", "via" => "2.0 Caddy", "x-forwarded-for" => "74.7.227.183", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https", "x-openai-host-hash" => "454925582" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/11/media/58565/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.9606.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/11/media/58565/force_download", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 35960}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "from" => "gptbot(at)openai.com", "host" => "pinchflat.uiau7e.uncld.dev", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.3; +https://openai.com/gptbot)", "via" => "2.0 Caddy", "x-forwarded-for" => "74.7.227.183", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https", "x-openai-host-hash" => "454925582" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.uiau7e.uncld.dev", method: "GET", owner: #PID<0.9607.0>, params: %{}, path_info: ["sources", "11", "media", "58565", "force_download"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.uiau7e.uncld.dev", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {10, 210, 0, 2}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"accept-encoding" (truncated) 13:14:04.700 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=ZWSj0M132e8 --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/86/bd/86bdcd59ea7925b7d560c2bb7e6c6689ed0876ba1f668bb8f5e9b11354f6606c.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 1 with: ERROR: [youtube] ZWSj0M132e8: Sign in to confirm your age. This video may be inappropriate for some users. Use --cookies-from-browser or --cookies for the authentication. See https://github.com/yt-dlp/yt-dlp/wiki/FAQ#how-do-i-pass-cookies-to-yt-dlp for how to manually pass cookies. Also see https://github.com/yt-dlp/yt-dlp/wiki/Extractors#exporting-youtube-cookies for tips on effectively exporting YouTube cookies 13:14:04.700 [error] yt-dlp download error for media item #8401: "ERROR: [youtube] ZWSj0M132e8: Sign in to confirm your age. This video may be inappropriate for some users. Use --cookies-from-browser or --cookies for the authentication. See https://github.com/yt-dlp/yt-dlp/wiki/FAQ#how-do-i-pass-cookies-to-yt-dlp for how to manually pass cookies. Also see https://github.com/yt-dlp/yt-dlp/wiki/Extractors#exporting-youtube-cookies for tips on effectively exporting YouTube cookies\n" 13:14:04.700 [error] yt-dlp download will not be retried: "ERROR: [youtube] ZWSj0M132e8: Sign in to confirm your age. This video may be inappropriate for some users. Use --cookies-from-browser or --cookies for the authentication. See https://github.com/yt-dlp/yt-dlp/wiki/FAQ#how-do-i-pass-cookies-to-yt-dlp for how to manually pass cookies. Also see https://github.com/yt-dlp/yt-dlp/wiki/Extractors#exporting-youtube-cookies for tips on effectively exporting YouTube cookies\n" 13:14:04.702 [info] {"args":{"id":8401},"id":202945,"meta":{},"state":"success","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":10526574,"event":"job:stop","queue_time":11172750,"attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 13:14:05.358 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=v6jHhzj08yQ --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/d3/26/d3262a101af1e5390b73dcf8ff4a4efc08c8f56f8f7b1402ff3aba36e29ae889.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 1 with: ERROR: [youtube] v6jHhzj08yQ: Sign in to confirm your age. This video may be inappropriate for some users. Use --cookies-from-browser or --cookies for the authentication. See https://github.com/yt-dlp/yt-dlp/wiki/FAQ#how-do-i-pass-cookies-to-yt-dlp for how to manually pass cookies. Also see https://github.com/yt-dlp/yt-dlp/wiki/Extractors#exporting-youtube-cookies for tips on effectively exporting YouTube cookies 13:14:05.358 [error] yt-dlp download error for media item #8418: "ERROR: [youtube] v6jHhzj08yQ: Sign in to confirm your age. This video may be inappropriate for some users. Use --cookies-from-browser or --cookies for the authentication. See https://github.com/yt-dlp/yt-dlp/wiki/FAQ#how-do-i-pass-cookies-to-yt-dlp for how to manually pass cookies. Also see https://github.com/yt-dlp/yt-dlp/wiki/Extractors#exporting-youtube-cookies for tips on effectively exporting YouTube cookies\n" 13:14:05.358 [error] yt-dlp download will not be retried: "ERROR: [youtube] v6jHhzj08yQ: Sign in to confirm your age. This video may be inappropriate for some users. Use --cookies-from-browser or --cookies for the authentication. See https://github.com/yt-dlp/yt-dlp/wiki/FAQ#how-do-i-pass-cookies-to-yt-dlp for how to manually pass cookies. Also see https://github.com/yt-dlp/yt-dlp/wiki/Extractors#exporting-youtube-cookies for tips on effectively exporting YouTube cookies\n" 13:14:05.359 [info] {"args":{"id":8418},"id":202946,"meta":{},"state":"success","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":10912612,"event":"job:stop","queue_time":11444797,"attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 13:14:12.575 [info] {"source":"oban","duration":2687,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:14:27.188 [info] {"args":{"id":22},"id":202925,"meta":{},"system_time":1767406467188564659,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 13:14:27.190 [debug] QUERY OK source="sources" db=1.2ms idle=1376.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [22] 13:14:27.191 [debug] QUERY OK source="settings" db=0.7ms idle=1012.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:14:27.192 [debug] QUERY OK source="media_profiles" db=0.8ms idle=378.5ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:14:27.193 [debug] QUERY OK source="settings" db=0.5ms idle=10.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:14:27.193 [debug] Fetching recent media IDs from YouTube API for playlist: UUP1RHyOhO98Yn2rMbDBirxA 13:14:27.194 [debug] QUERY OK source="settings" db=0.7ms idle=4.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:14:27.194 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 13:14:27.534 [debug] QUERY OK source="media_items" db=2.4ms idle=341.7ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND m0."media_id" IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [22, "N5RzDzO54gQ", "5glegyagphQ", "VtiV_RfFqNM", "qNYyH7bMcbI", "MPdiQsg_zQ8", "4-VOc2Aich8", "gMrBK9rp6As", "p0lqYk8_uMI", "aKpQHxUiwxc", "KsuhL0zVo3I", "pCJcoGDsbxc", "_5AR-GKeqlk", "VcJG7rIOjb0", "vRzAE_0VnXQ", "uj_bcWLWMtw", "xRyiudwo_jM", "pTMRT4CRUoM", "W8_LEBSOsPg", "YZuP7d99kCw"] 13:14:27.537 [debug] QUERY OK source="settings" db=0.5ms queue=0.1ms idle=345.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:14:27.538 [debug] QUERY OK source="settings" db=0.4ms idle=345.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:14:27.538 [debug] Running yt-dlp command for action: get_media_attributes 13:14:27.540 [debug] QUERY OK source="settings" db=0.4ms idle=346.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:14:27.541 [debug] QUERY OK source="settings" db=0.2ms queue=0.1ms idle=346.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:14:27.542 [debug] QUERY OK source="settings" db=0.4ms queue=0.1ms idle=6.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:14:27.542 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=gMrBK9rp6As --simulate --skip-download --output /downloads/White Raven/Season %(upload_date>%Y)S/s%(upload_date>%Y)Se%(upload_date>%m%d)S00 - %(title)S.%(ext)S --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --print-to-file %(.{id,title,live_status,original_url,description,aspect_ratio,duration,upload_date,timestamp,playlist_index,filename})j /tmp/pinchflat/data/7b/33/7b33bbfebcede0d684188fb272a0beeb9183dd297c1cb3b0cc7706dcc51d8305.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 13:14:32.040 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=gMrBK9rp6As --simulate --skip-download --output /downloads/White Raven/Season %(upload_date>%Y)S/s%(upload_date>%Y)Se%(upload_date>%m%d)S00 - %(title)S.%(ext)S --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --print-to-file %(.{id,title,live_status,original_url,description,aspect_ratio,duration,upload_date,timestamp,playlist_index,filename})j /tmp/pinchflat/data/7b/33/7b33bbfebcede0d684188fb272a0beeb9183dd297c1cb3b0cc7706dcc51d8305.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 1 with: ERROR: [youtube] gMrBK9rp6As: Offline. 13:14:32.040 [error] Error creating media item 'gMrBK9rp6As' from URL: {:error, "ERROR: [youtube] gMrBK9rp6As: Offline.\n", 1} 13:14:32.042 [debug] QUERY OK source="media_items" db=0.8ms queue=0.1ms idle=1228.1ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [22] 13:14:32.047 [debug] QUERY OK source="tasks" db=0.8ms queue=0.1ms idle=1232.8ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [202949, 22, ~U[2026-01-03 02:14:32Z], ~U[2026-01-03 02:14:32Z]] 13:14:32.048 [info] {"args":{"id":22},"id":202925,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":4858719,"event":"job:stop","queue_time":33681,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 13:14:33.206 [info] {"args":{"id":3},"id":202926,"meta":{},"system_time":1767406473206185650,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 13:14:33.207 [debug] QUERY OK source="sources" db=0.4ms idle=1158.6ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [3] 13:14:33.208 [debug] QUERY OK source="settings" db=0.3ms idle=1151.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:14:33.209 [debug] QUERY OK source="media_profiles" db=0.4ms idle=1014.2ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:14:33.210 [debug] QUERY OK source="settings" db=0.3ms queue=0.1ms idle=11.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:14:33.210 [debug] Fetching recent media IDs from YouTube API for playlist: UUISrVZmDM4x-Rq9mmNUw7Zw 13:14:33.211 [debug] QUERY OK source="settings" db=0.4ms queue=0.1ms idle=4.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:14:33.211 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 13:14:33.687 [debug] QUERY OK source="media_items" db=4.5ms idle=475.0ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND m0."media_id" IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [3, "CtF5dLHITYA", "SGJkxRdkRGg", "OUCt85aJaAA", "9gARPYZOka4", "-uH-Gi5tjEw", "qwUBBQKYX94", "s8VLDSQJ8nA", "EvPfr0lKkh4", "msXzAxF49gA", "hQCWaSvjkU0", "RcmjVsy3a-g", "xtuNc9vYJG4", "fj2tcg8OzsM", "2FZ4IfPACDM", "2Q9DzW20YJ8", "IVsWFGOE_mw", "vPxpMcv2Z4Y", "Zverj_ldlhY", "pQK8xasPd9Q", "_Yo7nh8u9pk", "4HzltsOvc0A", "a8UBLMm71JY", "3vqbr7-6Twk", "Df0iVjAKJZw", "n-X-AJpHUyI", "4CV7jI0e0Hw", "nqPoocCKci8", "5IIOdWnJGxg", "jkPL8BaM4ko", "CzeQtnRmUZ0", "9u-0d2IVZ3I", "igtvNmqsKM0", "47XDpW4nOzk", "8xvd7xSLQOo", "PnQPZMN0kIY", "feDph2WgRfI", "Z5FZ2XfX4Uc", "e0DxPopyrqM", "YvaK-Tjp2ck", "6_CctUPWX4I", "_DzHKw8yK58", "VnAkeiehyCg", "EFW1iCguDV8", "CEj7B1VzUwU", "3cy5fWUssjQ", "ZnjoTYmqLhs", "5IxtizzvaWw", "ZnBsMRl-EL0", "ET-M3T8E0PU", ...] 13:14:33.696 [debug] QUERY OK source="media_items" db=7.4ms idle=481.0ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [3] 13:14:33.701 [debug] QUERY OK source="tasks" db=0.8ms idle=489.1ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [202950, 3, ~U[2026-01-03 02:14:33Z], ~U[2026-01-03 02:14:33Z]] 13:14:33.702 [info] {"args":{"id":3},"id":202926,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":494996,"event":"job:stop","queue_time":434182,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 13:14:42.578 [info] {"source":"oban","duration":2726,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:14:47.253 [info] {"args":{"id":1},"id":202927,"meta":{},"system_time":1767406487252995301,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 13:14:47.254 [debug] QUERY OK source="sources" db=0.5ms idle=440.4ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 13:14:47.255 [debug] QUERY OK source="settings" db=0.7ms idle=441.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:14:47.256 [debug] QUERY OK source="media_profiles" db=1.1ms idle=442.5ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:14:47.257 [debug] QUERY OK source="settings" db=0.4ms idle=12.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:14:47.257 [debug] Fetching recent media IDs from YouTube API for playlist: UU54SLBnD5k5U3Q6N__UjbAw 13:14:47.258 [debug] QUERY OK source="settings" db=0.1ms idle=5.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:14:47.258 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 13:14:47.670 [debug] QUERY OK source="media_items" db=5.4ms idle=411.0ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND m0."media_id" IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [1, "UYCKIroDVBY", "ynOiaE9f6NY", "At_WjGosTNM", "_s7ZzdPoVZE", "ulhKFEKXIEI", "YpQ2jupcrHk", "PetMnG6cCDw", "VdxlXCnA1DM", "uj2s7HZQigU", "rZ7Y_gPAHig", "LTmK8Ab6IFE", "sZKNVGI8xt0", "_PUZIf6VQto", "J2-1ZErtS7A", "OEyptSEM5Tw", "HLeY2_hJvRk", "DkZ5uXcDxjc", "zPWe_aBuNfM", "PZN18led4ok", "66F09ebI9gw", "Pfok4B_xyaI", "e5HEGCCadBU", "hYFsHfPquPg", "nKsnfEB29ek", "OpDh_O473Ms", "ZTtZ12XtQpg", "TphXloX3PEI", "4Qhp4VPP2Wo", "J5l7jvbp3u8", "uL_YQMkkbUg", "SAZ17l0EwxI", "fTa_T2pVwuk", "6HpTVfX0SvI", "XlIWsRyXL8U", "nM1GQNJU6LQ", "WVN1LNy1zgo", "0Fxf6_q7qHc", "dL0KPsy-Dww", "G43wJ7YyWzM", "yVy89TnL9Zg", "BR1VRJDu-gc", "-2HeoqiMC6s", "7WXyx51z5G8", "jCk-9S8PQyc", "vGEIHv1XelY", "rOI7HYGGHpo", "gNeGHhU6UaI", "gUlkwSHOT7Q", "tpf7TxliCxA", ...] 13:14:47.678 [debug] QUERY OK source="media_items" db=5.4ms idle=417.4ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [1] 13:14:47.682 [debug] QUERY OK source="tasks" db=1.0ms idle=422.7ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [202951, 1, ~U[2026-01-03 02:14:47Z], ~U[2026-01-03 02:14:47Z]] 13:14:47.683 [info] {"args":{"id":1},"id":202927,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":429525,"event":"job:stop","queue_time":479840,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 13:14:51.466 [info] GET /media_profiles/1 13:14:51.466 [debug] Processing with PinchflatWeb.MediaProfiles.MediaProfileController.show/2 Parameters: %{"id" => "1"} Pipelines: [:browser] 13:14:51.468 [debug] QUERY OK source="media_profiles" db=0.6ms queue=0.1ms idle=654.3ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:14:51.470 [debug] QUERY OK source="sources" db=1.2ms idle=655.6ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."media_profile_id" = ?) ORDER BY s0."custom_name" [1] 13:14:51.473 [debug] QUERY OK source="settings" db=0.3ms queue=0.1ms idle=659.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:14:51.474 [debug] QUERY OK source="settings" db=0.4ms idle=660.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:14:51.475 [debug] QUERY OK source="settings" db=0.3ms idle=215.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:14:51.481 [info] Sent 200 in 14ms 13:14:51.963 [info] GET /download_logs 13:14:51.964 [debug] Processing with PinchflatWeb.Settings.SettingController.download_logs/2 Parameters: %{} Pipelines: [:browser] 13:14:51.964 [info] Sent 200 in 1ms 13:14:52.471 [info] GET /sources/3/force_metadata_refresh 13:14:52.472 [debug] QUERY OK source="settings" db=0.2ms idle=1001.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:14:52.473 [debug] QUERY OK source="settings" db=0.3ms idle=999.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:14:52.473 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 13:14:52.474 [error] #PID<0.9622.0> running PinchflatWeb.Endpoint (connection #PID<0.9621.0>, stream id 1) terminated Server: pinchflat.uiau7e.uncld.dev:80 (http) Request: GET /sources/3/force_metadata_refresh ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/3/force_metadata_refresh (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.9621.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/3/force_metadata_refresh", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 50858}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, zstd, deflate", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYdWh2dDBLWldwS0lwdWR5YTZ0ZFdjMDdL.EZH_Ne4sVcbNmPFHnZpQy6gLc_bEktCUM0bXd4zmpCo", "host" => "pinchflat.uiau7e.uncld.dev", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)", "via" => "2.0 Caddy", "x-forwarded-for" => "216.73.216.126", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{ "_pinchflat_key" => "SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYdWh2dDBLWldwS0lwdWR5YTZ0ZFdjMDdL.EZH_Ne4sVcbNmPFHnZpQy6gLc_bEktCUM0bXd4zmpCo" }, halted: false, host: "pinchflat.uiau7e.uncld.dev", method: "GET", owner: #PID<0.9622.0>, params: %{}, path_info: ["sources", "3", "force_metadata_refresh"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.uiau7e.uncld.dev", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {10, 210, 0, 2}, req_cookies: %{ "_pinchflat_key" => "SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYdWh2dDBLWldwS0lwdWR5YTZ0ZFdjMDdL.EZH_Ne4sVcbNmPFHnZpQy6gLc_bEktCUM0bXd4zmpCo" }, req_headers: [ {"accept", "*/*"}, {"accept-encoding", "gzip, br, zstd, deflate"}, {"cookie", "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYdWh2dDBLWldwS0lwdWR5YTZ0ZFdjMDdL.EZH_Ne4sVcbNmPFHnZpQy6gLc_bEktCUM0bXd4zmpCo"}, {"host", "pinchflat.uiau7e.uncld.dev"}, {"user-agent", "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)"}, {"via", "2.0 Caddy"}, {"x-forwarded-for", "216.73.216.126"}, {"x-forwarded-host", "pinchflat.uiau7e.uncld.dev"}, {"x-forwarded-proto", "https"} ], request_path: "/sources/3/force_metadata_refresh", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GIcW1z2AV6KX2gUAALIi"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.9621.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/3/force_metadata_refresh", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 50858}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, zstd, deflate", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYdWh2dDBLWldwS0lwdWR5YTZ0ZFdjMDdL.EZH_Ne4sVcbNmPFHnZpQy6gLc_bEktCUM0bXd4zmpCo", "host" => "pinchflat.uiau7e.uncld.dev", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)", "via" => "2.0 Caddy", "x-forwarded-for" => "216.73.216.126", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/3/force_metadata_refresh (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.9621.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/3/force_metadata_refresh", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 50858}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, zstd, deflate", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYdWh2dDBLWldwS0lwdWR5YTZ0ZFdjMDdL.EZH_Ne4sVcbNmPFHnZpQy6gLc_bEktCUM0bXd4zmpCo", "host" => "pinchflat.uiau7e.uncld.dev", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)", "via" => "2.0 Caddy", "x-forwarded-for" => "216.73.216.126", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{ "_pinchflat_key" => "SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYdWh2dDBLWldwS0lwdWR5YTZ0ZFdjMDdL.EZH_Ne4sVcbNmPFHnZpQy6gLc_bEktCUM0bXd4zmpCo" }, halted: false, host: "pinchflat.uiau7e.uncld.dev", method: "GET", owner: #PID<0.9622.0>, params: %{}, path_info: ["sources", "3", "force_metadata_refresh"], path (truncated) 13:14:53.480 [info] GET /sources/21/sync_files_on_disk 13:14:53.481 [debug] QUERY OK source="settings" db=0.8ms queue=0.1ms idle=1008.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:14:53.483 [debug] QUERY OK source="settings" db=0.9ms idle=1008.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:14:53.483 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 13:14:53.484 [error] #PID<0.9623.0> running PinchflatWeb.Endpoint (connection #PID<0.9617.0>, stream id 4) terminated Server: pinchflat.uiau7e.uncld.dev:80 (http) Request: GET /sources/21/sync_files_on_disk ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/21/sync_files_on_disk (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.9617.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/21/sync_files_on_disk", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 50844}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, zstd, deflate", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYdWh2dDBLWldwS0lwdWR5YTZ0ZFdjMDdL.EZH_Ne4sVcbNmPFHnZpQy6gLc_bEktCUM0bXd4zmpCo", "host" => "pinchflat.uiau7e.uncld.dev", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)", "via" => "2.0 Caddy", "x-forwarded-for" => "216.73.216.126", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 4, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{ "_pinchflat_key" => "SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYdWh2dDBLWldwS0lwdWR5YTZ0ZFdjMDdL.EZH_Ne4sVcbNmPFHnZpQy6gLc_bEktCUM0bXd4zmpCo" }, halted: false, host: "pinchflat.uiau7e.uncld.dev", method: "GET", owner: #PID<0.9623.0>, params: %{}, path_info: ["sources", "21", "sync_files_on_disk"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.uiau7e.uncld.dev", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {10, 210, 0, 2}, req_cookies: %{ "_pinchflat_key" => "SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYdWh2dDBLWldwS0lwdWR5YTZ0ZFdjMDdL.EZH_Ne4sVcbNmPFHnZpQy6gLc_bEktCUM0bXd4zmpCo" }, req_headers: [ {"accept", "*/*"}, {"accept-encoding", "gzip, br, zstd, deflate"}, {"cookie", "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYdWh2dDBLWldwS0lwdWR5YTZ0ZFdjMDdL.EZH_Ne4sVcbNmPFHnZpQy6gLc_bEktCUM0bXd4zmpCo"}, {"host", "pinchflat.uiau7e.uncld.dev"}, {"user-agent", "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)"}, {"via", "2.0 Caddy"}, {"x-forwarded-for", "216.73.216.126"}, {"x-forwarded-host", "pinchflat.uiau7e.uncld.dev"}, {"x-forwarded-proto", "https"} ], request_path: "/sources/21/sync_files_on_disk", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GIcW13mbgn3crxsAALJC"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.9617.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/21/sync_files_on_disk", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 50844}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, zstd, deflate", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYdWh2dDBLWldwS0lwdWR5YTZ0ZFdjMDdL.EZH_Ne4sVcbNmPFHnZpQy6gLc_bEktCUM0bXd4zmpCo", "host" => "pinchflat.uiau7e.uncld.dev", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)", "via" => "2.0 Caddy", "x-forwarded-for" => "216.73.216.126", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 4, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/21/sync_files_on_disk (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.9617.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/21/sync_files_on_disk", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 50844}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, zstd, deflate", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYdWh2dDBLWldwS0lwdWR5YTZ0ZFdjMDdL.EZH_Ne4sVcbNmPFHnZpQy6gLc_bEktCUM0bXd4zmpCo", "host" => "pinchflat.uiau7e.uncld.dev", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)", "via" => "2.0 Caddy", "x-forwarded-for" => "216.73.216.126", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 4, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{ "_pinchflat_key" => "SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYdWh2dDBLWldwS0lwdWR5YTZ0ZFdjMDdL.EZH_Ne4sVcbNmPFHnZpQy6gLc_bEktCUM0bXd4zmpCo" }, halted: false, host: "pinchflat.uiau7e.uncld.dev", method: "GET", owner: #PID<0.9623.0>, params: %{}, path_info: ["sources", "21", "sync_files_on_disk"], path_params: %{}, por (truncated) 13:14:53.981 [info] GET /sources/21/force_redownload 13:14:53.982 [debug] QUERY OK source="settings" db=0.7ms queue=0.1ms idle=1168.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:14:53.983 [debug] QUERY OK source="settings" db=0.4ms idle=1169.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:14:53.983 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 13:14:53.984 [error] #PID<0.9624.0> running PinchflatWeb.Endpoint (connection #PID<0.9617.0>, stream id 5) terminated Server: pinchflat.uiau7e.uncld.dev:80 (http) Request: GET /sources/21/force_redownload ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/21/force_redownload (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.9617.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/21/force_redownload", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 50844}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, zstd, deflate", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYdWh2dDBLWldwS0lwdWR5YTZ0ZFdjMDdL.EZH_Ne4sVcbNmPFHnZpQy6gLc_bEktCUM0bXd4zmpCo", "host" => "pinchflat.uiau7e.uncld.dev", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)", "via" => "2.0 Caddy", "x-forwarded-for" => "216.73.216.126", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 5, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{ "_pinchflat_key" => "SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYdWh2dDBLWldwS0lwdWR5YTZ0ZFdjMDdL.EZH_Ne4sVcbNmPFHnZpQy6gLc_bEktCUM0bXd4zmpCo" }, halted: false, host: "pinchflat.uiau7e.uncld.dev", method: "GET", owner: #PID<0.9624.0>, params: %{}, path_info: ["sources", "21", "force_redownload"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.uiau7e.uncld.dev", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {10, 210, 0, 2}, req_cookies: %{ "_pinchflat_key" => "SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYdWh2dDBLWldwS0lwdWR5YTZ0ZFdjMDdL.EZH_Ne4sVcbNmPFHnZpQy6gLc_bEktCUM0bXd4zmpCo" }, req_headers: [ {"accept", "*/*"}, {"accept-encoding", "gzip, br, zstd, deflate"}, {"cookie", "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYdWh2dDBLWldwS0lwdWR5YTZ0ZFdjMDdL.EZH_Ne4sVcbNmPFHnZpQy6gLc_bEktCUM0bXd4zmpCo"}, {"host", "pinchflat.uiau7e.uncld.dev"}, {"user-agent", "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)"}, {"via", "2.0 Caddy"}, {"x-forwarded-for", "216.73.216.126"}, {"x-forwarded-host", "pinchflat.uiau7e.uncld.dev"}, {"x-forwarded-proto", "https"} ], request_path: "/sources/21/force_redownload", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GIcW15d6MbLcTScAALJi"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.9617.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/21/force_redownload", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 50844}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, zstd, deflate", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYdWh2dDBLWldwS0lwdWR5YTZ0ZFdjMDdL.EZH_Ne4sVcbNmPFHnZpQy6gLc_bEktCUM0bXd4zmpCo", "host" => "pinchflat.uiau7e.uncld.dev", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)", "via" => "2.0 Caddy", "x-forwarded-for" => "216.73.216.126", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 5, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/21/force_redownload (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.9617.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/21/force_redownload", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 50844}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, zstd, deflate", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYdWh2dDBLWldwS0lwdWR5YTZ0ZFdjMDdL.EZH_Ne4sVcbNmPFHnZpQy6gLc_bEktCUM0bXd4zmpCo", "host" => "pinchflat.uiau7e.uncld.dev", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)", "via" => "2.0 Caddy", "x-forwarded-for" => "216.73.216.126", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 5, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{ "_pinchflat_key" => "SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYdWh2dDBLWldwS0lwdWR5YTZ0ZFdjMDdL.EZH_Ne4sVcbNmPFHnZpQy6gLc_bEktCUM0bXd4zmpCo" }, halted: false, host: "pinchflat.uiau7e.uncld.dev", method: "GET", owner: #PID<0.9624.0>, params: %{}, path_info: ["sources", "21", "force_redownload"], path_params: %{}, port: 80, p (truncated) 13:14:54.482 [info] GET /sources/18/edit 13:14:54.483 [debug] Processing with PinchflatWeb.Sources.SourceController.edit/2 Parameters: %{"id" => "18"} Pipelines: [:browser] 13:14:54.484 [debug] QUERY OK source="sources" db=0.5ms idle=1001.6ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [18] 13:14:54.485 [debug] QUERY OK source="media_profiles" db=0.5ms queue=0.1ms idle=1001.3ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at" FROM "media_profiles" AS m0 ORDER BY m0."name" [] 13:14:54.486 [debug] QUERY OK source="settings" db=0.4ms idle=502.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:14:54.486 [debug] QUERY OK source="settings" db=0.3ms idle=502.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:14:54.487 [debug] QUERY OK source="settings" db=0.5ms idle=221.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:14:54.492 [info] Sent 200 in 9ms 13:14:54.982 [info] GET /sources/16/edit 13:14:54.982 [debug] Processing with PinchflatWeb.Sources.SourceController.edit/2 Parameters: %{"id" => "16"} Pipelines: [:browser] 13:14:54.983 [debug] QUERY OK source="sources" db=0.8ms idle=498.8ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [16] 13:14:54.985 [debug] QUERY OK source="media_profiles" db=0.9ms idle=499.1ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at" FROM "media_profiles" AS m0 ORDER BY m0."name" [] 13:14:54.986 [debug] QUERY OK source="settings" db=0.5ms queue=0.1ms idle=500.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:14:54.987 [debug] QUERY OK source="settings" db=0.3ms queue=0.1ms idle=500.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:14:54.989 [debug] QUERY OK source="settings" db=0.4ms queue=0.1ms idle=500.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:14:54.997 [info] Sent 200 in 14ms 13:14:55.483 [info] GET /sources/3/edit 13:14:55.483 [debug] Processing with PinchflatWeb.Sources.SourceController.edit/2 Parameters: %{"id" => "3"} Pipelines: [:browser] 13:14:55.485 [debug] QUERY OK source="sources" db=0.7ms idle=498.9ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [3] 13:14:55.486 [debug] QUERY OK source="media_profiles" db=0.6ms idle=498.9ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at" FROM "media_profiles" AS m0 ORDER BY m0."name" [] 13:14:55.487 [debug] QUERY OK source="settings" db=0.3ms idle=499.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:14:55.488 [debug] QUERY OK source="settings" db=0.5ms idle=498.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:14:55.489 [debug] QUERY OK source="settings" db=0.4ms idle=219.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:14:55.493 [info] Sent 200 in 9ms 13:14:55.984 [info] GET /sources/21/force_index 13:14:55.985 [debug] QUERY OK source="settings" db=0.2ms idle=499.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:14:55.985 [debug] QUERY OK source="settings" db=0.3ms idle=499.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:14:55.986 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 13:14:55.986 [error] #PID<0.9628.0> running PinchflatWeb.Endpoint (connection #PID<0.9617.0>, stream id 9) terminated Server: pinchflat.uiau7e.uncld.dev:80 (http) Request: GET /sources/21/force_index ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/21/force_index (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.9617.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/21/force_index", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 50844}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, zstd, deflate", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYdWh2dDBLWldwS0lwdWR5YTZ0ZFdjMDdL.EZH_Ne4sVcbNmPFHnZpQy6gLc_bEktCUM0bXd4zmpCo", "host" => "pinchflat.uiau7e.uncld.dev", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)", "via" => "2.0 Caddy", "x-forwarded-for" => "216.73.216.126", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 9, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{ "_pinchflat_key" => "SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYdWh2dDBLWldwS0lwdWR5YTZ0ZFdjMDdL.EZH_Ne4sVcbNmPFHnZpQy6gLc_bEktCUM0bXd4zmpCo" }, halted: false, host: "pinchflat.uiau7e.uncld.dev", method: "GET", owner: #PID<0.9628.0>, params: %{}, path_info: ["sources", "21", "force_index"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.uiau7e.uncld.dev", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {10, 210, 0, 2}, req_cookies: %{ "_pinchflat_key" => "SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYdWh2dDBLWldwS0lwdWR5YTZ0ZFdjMDdL.EZH_Ne4sVcbNmPFHnZpQy6gLc_bEktCUM0bXd4zmpCo" }, req_headers: [ {"accept", "*/*"}, {"accept-encoding", "gzip, br, zstd, deflate"}, {"cookie", "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYdWh2dDBLWldwS0lwdWR5YTZ0ZFdjMDdL.EZH_Ne4sVcbNmPFHnZpQy6gLc_bEktCUM0bXd4zmpCo"}, {"host", "pinchflat.uiau7e.uncld.dev"}, {"user-agent", "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)"}, {"via", "2.0 Caddy"}, {"x-forwarded-for", "216.73.216.126"}, {"x-forwarded-host", "pinchflat.uiau7e.uncld.dev"}, {"x-forwarded-proto", "https"} ], request_path: "/sources/21/force_index", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GIcW2A7gaQPdwj8AALMi"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.9617.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/21/force_index", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 50844}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, zstd, deflate", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYdWh2dDBLWldwS0lwdWR5YTZ0ZFdjMDdL.EZH_Ne4sVcbNmPFHnZpQy6gLc_bEktCUM0bXd4zmpCo", "host" => "pinchflat.uiau7e.uncld.dev", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)", "via" => "2.0 Caddy", "x-forwarded-for" => "216.73.216.126", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 9, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/21/force_index (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.9617.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/21/force_index", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 50844}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, zstd, deflate", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYdWh2dDBLWldwS0lwdWR5YTZ0ZFdjMDdL.EZH_Ne4sVcbNmPFHnZpQy6gLc_bEktCUM0bXd4zmpCo", "host" => "pinchflat.uiau7e.uncld.dev", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)", "via" => "2.0 Caddy", "x-forwarded-for" => "216.73.216.126", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 9, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{ "_pinchflat_key" => "SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYdWh2dDBLWldwS0lwdWR5YTZ0ZFdjMDdL.EZH_Ne4sVcbNmPFHnZpQy6gLc_bEktCUM0bXd4zmpCo" }, halted: false, host: "pinchflat.uiau7e.uncld.dev", method: "GET", owner: #PID<0.9628.0>, params: %{}, path_info: ["sources", "21", "force_index"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => (truncated) 13:14:56.489 [info] GET /sources/6 13:14:56.489 [debug] Processing with PinchflatWeb.Sources.SourceController.show/2 Parameters: %{"id" => "6"} Pipelines: [:browser] 13:14:56.491 [debug] QUERY OK source="sources" db=1.1ms idle=1002.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [6] 13:14:56.492 [debug] QUERY OK source="media_profiles" db=0.8ms idle=1002.1ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:14:56.498 [debug] QUERY OK source="tasks" db=5.3ms idle=507.7ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at" FROM "tasks" AS t0 INNER JOIN "oban_jobs" AS o1 ON o1."id" = t0."job_id" WHERE (t0."source_id" = ?) AND (o1."state" IN (?,?,?,?)) [6, "executing", "available", "scheduled", "retryable"] 13:14:56.500 [debug] QUERY OK source="oban_jobs" db=1.1ms idle=512.8ms SELECT o0."id", o0."state", o0."queue", o0."worker", o0."args", o0."meta", o0."tags", o0."errors", o0."attempt", o0."attempted_by", o0."max_attempts", o0."priority", o0."attempted_at", o0."cancelled_at", o0."completed_at", o0."discarded_at", o0."inserted_at", o0."scheduled_at", o0."id" FROM "oban_jobs" AS o0 WHERE (o0."id" IN (?,?)) [202931, 202170] 13:14:56.500 [debug] QUERY OK source="settings" db=0.3ms idle=228.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:14:56.501 [debug] QUERY OK source="settings" db=0.6ms idle=9.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:14:56.502 [debug] QUERY OK source="settings" db=0.3ms idle=9.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:14:56.504 [debug] QUERY OK source="sources" db=0.6ms idle=5.6ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [6] 13:14:56.508 [debug] QUERY OK source="media_items" db=3.7ms idle=5.0ms SELECT count(m0."id") FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [6] 13:14:56.513 [debug] QUERY OK source="media_items" db=4.2ms idle=8.2ms SELECT m0."id", m0."title", m0."uploaded_at", m0."prevent_download", m0."last_error" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) ORDER BY m0."uploaded_at" DESC LIMIT ? OFFSET ? [6, 10, 0] 13:14:56.514 [debug] QUERY OK source="sources" db=0.6ms idle=12.2ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [6] 13:14:56.515 [debug] QUERY OK source="media_items" db=0.5ms queue=0.1ms idle=12.6ms SELECT count(m0."id") FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND NOT (m0."media_filepath" IS NULL)) [6] 13:14:56.519 [debug] QUERY OK source="media_items" db=3.1ms queue=0.1ms idle=11.4ms SELECT m0."id", m0."title", m0."uploaded_at", m0."prevent_download", m0."last_error" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND NOT (m0."media_filepath" IS NULL)) ORDER BY m0."uploaded_at" DESC LIMIT ? OFFSET ? [6, 10, 0] 13:14:56.523 [debug] QUERY OK source="sources" db=0.7ms idle=13.4ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [6] 13:14:56.525 [debug] QUERY OK source="media_items" db=1.3ms idle=10.2ms SELECT count(m0."id") FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds"))))) [6] 13:14:56.530 [debug] QUERY OK source="media_items" db=4.4ms queue=0.1ms idle=10.7ms SELECT m0."id", m0."title", m0."uploaded_at", m0."prevent_download", m0."last_error" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds"))))) ORDER BY m0."uploaded_at" DESC LIMIT ? OFFSET ? [6, 10, 0] 13:14:56.535 [info] Sent 200 in 46ms 13:14:56.986 [info] GET /sources/21/force_metadata_refresh 13:14:56.987 [debug] QUERY OK source="settings" db=0.3ms idle=470.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:14:56.987 [debug] QUERY OK source="settings" db=0.1ms idle=467.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:14:56.987 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 13:14:56.988 [error] #PID<0.9630.0> running PinchflatWeb.Endpoint (connection #PID<0.9617.0>, stream id 11) terminated Server: pinchflat.uiau7e.uncld.dev:80 (http) Request: GET /sources/21/force_metadata_refresh ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/21/force_metadata_refresh (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.9617.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/21/force_metadata_refresh", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 50844}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, zstd, deflate", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYdWh2dDBLWldwS0lwdWR5YTZ0ZFdjMDdL.EZH_Ne4sVcbNmPFHnZpQy6gLc_bEktCUM0bXd4zmpCo", "host" => "pinchflat.uiau7e.uncld.dev", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)", "via" => "2.0 Caddy", "x-forwarded-for" => "216.73.216.126", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 11, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{ "_pinchflat_key" => "SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYdWh2dDBLWldwS0lwdWR5YTZ0ZFdjMDdL.EZH_Ne4sVcbNmPFHnZpQy6gLc_bEktCUM0bXd4zmpCo" }, halted: false, host: "pinchflat.uiau7e.uncld.dev", method: "GET", owner: #PID<0.9630.0>, params: %{}, path_info: ["sources", "21", "force_metadata_refresh"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.uiau7e.uncld.dev", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {10, 210, 0, 2}, req_cookies: %{ "_pinchflat_key" => "SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYdWh2dDBLWldwS0lwdWR5YTZ0ZFdjMDdL.EZH_Ne4sVcbNmPFHnZpQy6gLc_bEktCUM0bXd4zmpCo" }, req_headers: [ {"accept", "*/*"}, {"accept-encoding", "gzip, br, zstd, deflate"}, {"cookie", "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYdWh2dDBLWldwS0lwdWR5YTZ0ZFdjMDdL.EZH_Ne4sVcbNmPFHnZpQy6gLc_bEktCUM0bXd4zmpCo"}, {"host", "pinchflat.uiau7e.uncld.dev"}, {"user-agent", "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)"}, {"via", "2.0 Caddy"}, {"x-forwarded-for", "216.73.216.126"}, {"x-forwarded-host", "pinchflat.uiau7e.uncld.dev"}, {"x-forwarded-proto", "https"} ], request_path: "/sources/21/force_metadata_refresh", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GIcW2EqU7pH-Bn4AALQi"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.9617.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/21/force_metadata_refresh", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 50844}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, zstd, deflate", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYdWh2dDBLWldwS0lwdWR5YTZ0ZFdjMDdL.EZH_Ne4sVcbNmPFHnZpQy6gLc_bEktCUM0bXd4zmpCo", "host" => "pinchflat.uiau7e.uncld.dev", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)", "via" => "2.0 Caddy", "x-forwarded-for" => "216.73.216.126", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 11, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/21/force_metadata_refresh (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.9617.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/21/force_metadata_refresh", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 50844}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, zstd, deflate", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYdWh2dDBLWldwS0lwdWR5YTZ0ZFdjMDdL.EZH_Ne4sVcbNmPFHnZpQy6gLc_bEktCUM0bXd4zmpCo", "host" => "pinchflat.uiau7e.uncld.dev", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)", "via" => "2.0 Caddy", "x-forwarded-for" => "216.73.216.126", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 11, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{ "_pinchflat_key" => "SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYdWh2dDBLWldwS0lwdWR5YTZ0ZFdjMDdL.EZH_Ne4sVcbNmPFHnZpQy6gLc_bEktCUM0bXd4zmpCo" }, halted: false, host: "pinchflat.uiau7e.uncld.dev", method: "GET", owner: #PID<0.9630.0>, params: %{}, path_info: ["sources", "21", "force_metadata_refresh"], (truncated) 13:14:57.495 [info] GET /sources/21/edit 13:14:57.496 [debug] Processing with PinchflatWeb.Sources.SourceController.edit/2 Parameters: %{"id" => "21"} Pipelines: [:browser] 13:14:57.497 [debug] QUERY OK source="sources" db=0.3ms idle=971.3ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [21] 13:14:57.497 [debug] QUERY OK source="media_profiles" db=0.3ms idle=967.2ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at" FROM "media_profiles" AS m0 ORDER BY m0."name" [] 13:14:57.499 [debug] QUERY OK source="settings" db=0.5ms idle=511.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:14:57.499 [debug] QUERY OK source="settings" db=0.3ms idle=511.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:14:57.500 [debug] QUERY OK source="settings" db=0.5ms idle=225.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:14:57.505 [info] Sent 200 in 9ms 13:14:59.549 [info] GET /sources/18/force_index 13:14:59.550 [debug] QUERY OK source="settings" db=0.5ms queue=0.1ms idle=736.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:14:59.551 [debug] QUERY OK source="settings" db=0.3ms queue=0.1ms idle=737.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:14:59.551 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 13:14:59.553 [info] GET /sources/3/force_redownload 13:14:59.553 [debug] QUERY OK source="settings" db=0.3ms idle=740.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:14:59.554 [debug] QUERY OK source="settings" db=0.4ms idle=740.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:14:59.554 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 13:14:59.555 [error] #PID<0.9634.0> running PinchflatWeb.Endpoint (connection #PID<0.9633.0>, stream id 1) terminated Server: pinchflat.uiau7e.uncld.dev:80 (http) Request: GET /sources/3/force_redownload ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/3/force_redownload (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.9633.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/3/force_redownload", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 46882}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, zstd, deflate", "host" => "pinchflat.uiau7e.uncld.dev", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)", "via" => "2.0 Caddy", "x-forwarded-for" => "216.73.216.126", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.uiau7e.uncld.dev", method: "GET", owner: #PID<0.9634.0>, params: %{}, path_info: ["sources", "3", "force_redownload"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.uiau7e.uncld.dev", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {10, 210, 0, 2}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"accept-encoding", "gzip, br, zstd, deflate"}, {"host", "pinchflat.uiau7e.uncld.dev"}, {"user-agent", "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)"}, {"via", "2.0 Caddy"}, {"x-forwarded-for", "216.73.216.126"}, {"x-forwarded-host", "pinchflat.uiau7e.uncld.dev"}, {"x-forwarded-proto", "https"} ], request_path: "/sources/3/force_redownload", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GIcW2OOU8pENJIcAAb1h"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.9633.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/3/force_redownload", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 46882}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, zstd, deflate", "host" => "pinchflat.uiau7e.uncld.dev", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)", "via" => "2.0 Caddy", "x-forwarded-for" => "216.73.216.126", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/3/force_redownload (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.9633.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/3/force_redownload", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 46882}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, zstd, deflate", "host" => "pinchflat.uiau7e.uncld.dev", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)", "via" => "2.0 Caddy", "x-forwarded-for" => "216.73.216.126", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.uiau7e.uncld.dev", method: "GET", owner: #PID<0.9634.0>, params: %{}, path_info: ["sources", "3", "force_redownload"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.uiau7e.uncld.dev", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {10, 210, 0, 2}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"accept-encoding", "gzip, br, zstd, deflate"}, {"host", "pinchflat.uiau7e.uncld.dev"}, {"user-agent", "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)"}, {"via", "2.0 Caddy"}, {"x-forwarded-for", "216.73.216.126"}, {"x-forwarded-host", "pinchflat.uiau7e.uncld.dev"}, {"x-forwarded-proto", "https"} ], (truncated) 13:14:59.552 [error] #PID<0.9632.0> running PinchflatWeb.Endpoint (connection #PID<0.9617.0>, stream id 13) terminated Server: pinchflat.uiau7e.uncld.dev:80 (http) Request: GET /sources/18/force_index ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/18/force_index (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.9617.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/18/force_index", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 50844}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, zstd, deflate", "host" => "pinchflat.uiau7e.uncld.dev", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)", "via" => "2.0 Caddy", "x-forwarded-for" => "216.73.216.126", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 13, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.uiau7e.uncld.dev", method: "GET", owner: #PID<0.9632.0>, params: %{}, path_info: ["sources", "18", "force_index"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.uiau7e.uncld.dev", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {10, 210, 0, 2}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"accept-encoding", "gzip, br, zstd, deflate"}, {"host", "pinchflat.uiau7e.uncld.dev"}, {"user-agent", "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)"}, {"via", "2.0 Caddy"}, {"x-forwarded-for", "216.73.216.126"}, {"x-forwarded-host", "pinchflat.uiau7e.uncld.dev"}, {"x-forwarded-proto", "https"} ], request_path: "/sources/18/force_index", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GIcW2ONUvQtnZcAAALSC"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.9617.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/18/force_index", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 50844}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, zstd, deflate", "host" => "pinchflat.uiau7e.uncld.dev", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)", "via" => "2.0 Caddy", "x-forwarded-for" => "216.73.216.126", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 13, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/18/force_index (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.9617.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/18/force_index", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 50844}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, zstd, deflate", "host" => "pinchflat.uiau7e.uncld.dev", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)", "via" => "2.0 Caddy", "x-forwarded-for" => "216.73.216.126", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 13, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.uiau7e.uncld.dev", method: "GET", owner: #PID<0.9632.0>, params: %{}, path_info: ["sources", "18", "force_index"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.uiau7e.uncld.dev", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {10, 210, 0, 2}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"accept-encoding", "gzip, br, zstd, deflate"}, {"host", "pinchflat.uiau7e.uncld.dev"}, {"user-agent", "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)"}, {"via", "2.0 Caddy"}, {"x-forwarded-for", "216.73.216.126"}, {"x-forwarded-host", "pinchflat.uiau7e.uncld.dev"}, {"x-forwarded-proto", "https"} ], request_path: "/sources/18/force (truncated) 13:14:59.836 [info] GET /sources/16/force_index 13:14:59.837 [debug] QUERY OK source="settings" db=0.6ms idle=555.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:14:59.838 [debug] QUERY OK source="settings" db=0.7ms idle=287.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:14:59.838 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 13:14:59.839 [error] #PID<0.9635.0> running PinchflatWeb.Endpoint (connection #PID<0.9633.0>, stream id 2) terminated Server: pinchflat.uiau7e.uncld.dev:80 (http) Request: GET /sources/16/force_index ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/16/force_index (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.9633.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/16/force_index", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 46882}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, zstd, deflate", "host" => "pinchflat.uiau7e.uncld.dev", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)", "via" => "2.0 Caddy", "x-forwarded-for" => "216.73.216.126", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 2, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.uiau7e.uncld.dev", method: "GET", owner: #PID<0.9635.0>, params: %{}, path_info: ["sources", "16", "force_index"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.uiau7e.uncld.dev", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {10, 210, 0, 2}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"accept-encoding", "gzip, br, zstd, deflate"}, {"host", "pinchflat.uiau7e.uncld.dev"}, {"user-agent", "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)"}, {"via", "2.0 Caddy"}, {"x-forwarded-for", "216.73.216.126"}, {"x-forwarded-host", "pinchflat.uiau7e.uncld.dev"}, {"x-forwarded-proto", "https"} ], request_path: "/sources/16/force_index", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GIcW2PRzGxMafJwAAb2B"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.9633.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/16/force_index", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 46882}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, zstd, deflate", "host" => "pinchflat.uiau7e.uncld.dev", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)", "via" => "2.0 Caddy", "x-forwarded-for" => "216.73.216.126", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 2, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/16/force_index (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.9633.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/16/force_index", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 46882}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, zstd, deflate", "host" => "pinchflat.uiau7e.uncld.dev", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)", "via" => "2.0 Caddy", "x-forwarded-for" => "216.73.216.126", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 2, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.uiau7e.uncld.dev", method: "GET", owner: #PID<0.9635.0>, params: %{}, path_info: ["sources", "16", "force_index"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.uiau7e.uncld.dev", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {10, 210, 0, 2}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"accept-encoding", "gzip, br, zstd, deflate"}, {"host", "pinchflat.uiau7e.uncld.dev"}, {"user-agent", "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)"}, {"via", "2.0 Caddy"}, {"x-forwarded-for", "216.73.216.126"}, {"x-forwarded-host", "pinchflat.uiau7e.uncld.dev"}, {"x-forwarded-proto", "https"} ], request_path: "/sources/16/force_ind (truncated) 13:15:00.138 [info] {"source":"oban","duration":579,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 13:15:00.330 [info] GET /sources/21/media/44786 13:15:00.330 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "44786", "source_id" => "21"} Pipelines: [:browser] 13:15:00.332 [debug] QUERY OK source="media_items" db=1.2ms queue=0.1ms idle=776.6ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [44786] 13:15:00.333 [debug] QUERY OK source="tasks" db=0.4ms idle=495.9ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [44786] 13:15:00.333 [debug] QUERY OK source="sources" db=0.4ms idle=495.1ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [21] 13:15:00.335 [debug] QUERY OK source="settings" db=0.4ms idle=196.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:15:00.335 [debug] QUERY OK source="settings" db=0.4ms idle=51.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:15:00.336 [debug] QUERY OK source="settings" db=0.1ms idle=3.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:15:00.337 [debug] QUERY OK source="media_profiles" db=0.1ms idle=3.3ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:15:00.359 [info] Sent 200 in 28ms 13:15:00.834 [info] GET /sources/21/media/39259 13:15:00.835 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "39259", "source_id" => "21"} Pipelines: [:browser] 13:15:00.837 [debug] QUERY OK source="media_items" db=1.0ms idle=501.8ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [39259] 13:15:00.839 [debug] QUERY OK source="tasks" db=1.4ms idle=502.8ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [39259] 13:15:00.840 [debug] QUERY OK source="sources" db=1.9ms idle=502.4ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [21] 13:15:00.841 [debug] QUERY OK source="settings" db=0.5ms idle=504.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:15:00.841 [debug] QUERY OK source="settings" db=0.3ms idle=503.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:15:00.842 [debug] QUERY OK source="settings" db=0.3ms idle=5.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:15:00.844 [debug] QUERY OK source="media_profiles" db=0.5ms idle=4.1ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:15:00.846 [info] Sent 200 in 11ms 13:15:01.334 [info] GET /sources/21/media/39508 13:15:01.334 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "39508", "source_id" => "21"} Pipelines: [:browser] 13:15:01.336 [debug] QUERY OK source="media_items" db=1.1ms idle=494.2ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [39508] 13:15:01.338 [debug] QUERY OK source="tasks" db=1.2ms queue=0.1ms idle=495.3ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [39508] 13:15:01.338 [debug] QUERY OK source="sources" db=1.6ms idle=494.5ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [21] 13:15:01.340 [debug] QUERY OK source="settings" db=0.5ms idle=495.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:15:01.340 [debug] QUERY OK source="settings" db=0.3ms idle=53.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:15:01.341 [debug] QUERY OK source="settings" db=0.4ms idle=4.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:15:01.342 [debug] QUERY OK source="media_profiles" db=0.5ms idle=3.7ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:15:01.344 [info] Sent 200 in 10ms 13:15:01.840 [info] GET /sources/21/media/59005 13:15:01.841 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "59005", "source_id" => "21"} Pipelines: [:browser] 13:15:01.843 [debug] QUERY OK source="media_items" db=1.3ms idle=502.9ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [59005] 13:15:01.844 [debug] QUERY OK source="tasks" db=0.9ms idle=503.8ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [59005] 13:15:01.845 [debug] QUERY OK source="sources" db=1.1ms idle=503.4ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [21] 13:15:01.846 [debug] QUERY OK source="settings" db=0.3ms idle=504.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:15:01.846 [debug] QUERY OK source="settings" db=0.3ms idle=503.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:15:01.847 [debug] QUERY OK source="settings" db=0.3ms idle=4.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:15:01.849 [debug] QUERY OK source="media_profiles" db=0.5ms idle=3.5ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:15:01.850 [info] Sent 200 in 10ms 13:15:02.346 [info] GET /sources/3/force_index 13:15:02.347 [debug] QUERY OK source="settings" db=0.7ms idle=500.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:15:02.348 [debug] QUERY OK source="settings" db=0.7ms idle=501.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:15:02.348 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 13:15:02.349 [error] #PID<0.9652.0> running PinchflatWeb.Endpoint (connection #PID<0.9633.0>, stream id 7) terminated Server: pinchflat.uiau7e.uncld.dev:80 (http) Request: GET /sources/3/force_index ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/3/force_index (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.9633.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/3/force_index", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 46882}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, zstd, deflate", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYb210V2ZqQVF3WE1pNXVaLXZqa21JU1Vh.Ohtt8IAWUg8Lr8nL8sZkJ03clOIGtyLBoHTRYt-6dTM", "host" => "pinchflat.uiau7e.uncld.dev", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)", "via" => "2.0 Caddy", "x-forwarded-for" => "216.73.216.126", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 7, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{ "_pinchflat_key" => "SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYb210V2ZqQVF3WE1pNXVaLXZqa21JU1Vh.Ohtt8IAWUg8Lr8nL8sZkJ03clOIGtyLBoHTRYt-6dTM" }, halted: false, host: "pinchflat.uiau7e.uncld.dev", method: "GET", owner: #PID<0.9652.0>, params: %{}, path_info: ["sources", "3", "force_index"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.uiau7e.uncld.dev", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {10, 210, 0, 2}, req_cookies: %{ "_pinchflat_key" => "SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYb210V2ZqQVF3WE1pNXVaLXZqa21JU1Vh.Ohtt8IAWUg8Lr8nL8sZkJ03clOIGtyLBoHTRYt-6dTM" }, req_headers: [ {"accept", "*/*"}, {"accept-encoding", "gzip, br, zstd, deflate"}, {"cookie", "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYb210V2ZqQVF3WE1pNXVaLXZqa21JU1Vh.Ohtt8IAWUg8Lr8nL8sZkJ03clOIGtyLBoHTRYt-6dTM"}, {"host", "pinchflat.uiau7e.uncld.dev"}, {"user-agent", "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)"}, {"via", "2.0 Caddy"}, {"x-forwarded-for", "216.73.216.126"}, {"x-forwarded-host", "pinchflat.uiau7e.uncld.dev"}, {"x-forwarded-proto", "https"} ], request_path: "/sources/3/force_index", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GIcW2YoQujafD0gAAb4h"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.9633.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/3/force_index", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 46882}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, zstd, deflate", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYb210V2ZqQVF3WE1pNXVaLXZqa21JU1Vh.Ohtt8IAWUg8Lr8nL8sZkJ03clOIGtyLBoHTRYt-6dTM", "host" => "pinchflat.uiau7e.uncld.dev", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)", "via" => "2.0 Caddy", "x-forwarded-for" => "216.73.216.126", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 7, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/3/force_index (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.9633.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/3/force_index", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 46882}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, zstd, deflate", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYb210V2ZqQVF3WE1pNXVaLXZqa21JU1Vh.Ohtt8IAWUg8Lr8nL8sZkJ03clOIGtyLBoHTRYt-6dTM", "host" => "pinchflat.uiau7e.uncld.dev", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)", "via" => "2.0 Caddy", "x-forwarded-for" => "216.73.216.126", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 7, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{ "_pinchflat_key" => "SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYb210V2ZqQVF3WE1pNXVaLXZqa21JU1Vh.Ohtt8IAWUg8Lr8nL8sZkJ03clOIGtyLBoHTRYt-6dTM" }, halted: false, host: "pinchflat.uiau7e.uncld.dev", method: "GET", owner: #PID<0.9652.0>, params: %{}, path_info: ["sources", "3", "force_index"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], (truncated) 13:15:02.850 [info] GET /media_profiles/1/edit 13:15:02.850 [debug] Processing with PinchflatWeb.MediaProfiles.MediaProfileController.edit/2 Parameters: %{"id" => "1"} Pipelines: [:browser] 13:15:02.852 [debug] QUERY OK source="media_profiles" db=1.0ms idle=1003.5ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:15:02.853 [debug] QUERY OK source="settings" db=0.5ms idle=1003.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:15:02.853 [debug] QUERY OK source="settings" db=0.3ms idle=563.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:15:02.855 [debug] QUERY OK source="settings" db=0.5ms idle=507.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:15:02.860 [info] Sent 200 in 9ms 13:15:03.373 [info] GET /media_profiles/new 13:15:03.373 [debug] Processing with PinchflatWeb.MediaProfiles.MediaProfileController.new/2 Parameters: %{} Pipelines: [:browser] 13:15:03.374 [debug] QUERY OK source="settings" db=0.4ms idle=521.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:15:03.375 [debug] QUERY OK source="settings" db=0.5ms idle=521.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:15:03.376 [debug] QUERY OK source="settings" db=0.2ms idle=521.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:15:03.377 [debug] QUERY OK source="settings" db=0.2ms idle=521.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:15:03.378 [debug] QUERY OK source="settings" db=0.3ms idle=85.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:15:03.382 [info] Sent 200 in 8ms 13:15:03.842 [info] GET /sources/18/force_metadata_refresh 13:15:03.844 [debug] QUERY OK source="settings" db=0.5ms queue=0.2ms idle=469.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:15:03.845 [debug] QUERY OK source="settings" db=0.3ms queue=0.1ms idle=469.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:15:03.845 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 13:15:03.846 [error] #PID<0.9655.0> running PinchflatWeb.Endpoint (connection #PID<0.9633.0>, stream id 10) terminated Server: pinchflat.uiau7e.uncld.dev:80 (http) Request: GET /sources/18/force_metadata_refresh ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/18/force_metadata_refresh (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.9633.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/18/force_metadata_refresh", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 46882}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, zstd, deflate", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYb210V2ZqQVF3WE1pNXVaLXZqa21JU1Vh.Ohtt8IAWUg8Lr8nL8sZkJ03clOIGtyLBoHTRYt-6dTM", "host" => "pinchflat.uiau7e.uncld.dev", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)", "via" => "2.0 Caddy", "x-forwarded-for" => "216.73.216.126", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 10, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{ "_pinchflat_key" => "SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYb210V2ZqQVF3WE1pNXVaLXZqa21JU1Vh.Ohtt8IAWUg8Lr8nL8sZkJ03clOIGtyLBoHTRYt-6dTM" }, halted: false, host: "pinchflat.uiau7e.uncld.dev", method: "GET", owner: #PID<0.9655.0>, params: %{}, path_info: ["sources", "18", "force_metadata_refresh"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.uiau7e.uncld.dev", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {10, 210, 0, 2}, req_cookies: %{ "_pinchflat_key" => "SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYb210V2ZqQVF3WE1pNXVaLXZqa21JU1Vh.Ohtt8IAWUg8Lr8nL8sZkJ03clOIGtyLBoHTRYt-6dTM" }, req_headers: [ {"accept", "*/*"}, {"accept-encoding", "gzip, br, zstd, deflate"}, {"cookie", "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYb210V2ZqQVF3WE1pNXVaLXZqa21JU1Vh.Ohtt8IAWUg8Lr8nL8sZkJ03clOIGtyLBoHTRYt-6dTM"}, {"host", "pinchflat.uiau7e.uncld.dev"}, {"user-agent", "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)"}, {"via", "2.0 Caddy"}, {"x-forwarded-for", "216.73.216.126"}, {"x-forwarded-host", "pinchflat.uiau7e.uncld.dev"}, {"x-forwarded-proto", "https"} ], request_path: "/sources/18/force_metadata_refresh", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GIcW2eNC20ZBzcYAAb6B"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.9633.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/18/force_metadata_refresh", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 46882}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, zstd, deflate", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYb210V2ZqQVF3WE1pNXVaLXZqa21JU1Vh.Ohtt8IAWUg8Lr8nL8sZkJ03clOIGtyLBoHTRYt-6dTM", "host" => "pinchflat.uiau7e.uncld.dev", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)", "via" => "2.0 Caddy", "x-forwarded-for" => "216.73.216.126", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 10, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/18/force_metadata_refresh (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.9633.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/18/force_metadata_refresh", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 46882}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, zstd, deflate", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYb210V2ZqQVF3WE1pNXVaLXZqa21JU1Vh.Ohtt8IAWUg8Lr8nL8sZkJ03clOIGtyLBoHTRYt-6dTM", "host" => "pinchflat.uiau7e.uncld.dev", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)", "via" => "2.0 Caddy", "x-forwarded-for" => "216.73.216.126", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 10, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{ "_pinchflat_key" => "SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYb210V2ZqQVF3WE1pNXVaLXZqa21JU1Vh.Ohtt8IAWUg8Lr8nL8sZkJ03clOIGtyLBoHTRYt-6dTM" }, halted: false, host: "pinchflat.uiau7e.uncld.dev", method: "GET", owner: #PID<0.9655.0>, params: %{}, path_info: ["sources", "18", "force_metadata_refresh"], (truncated) 13:15:04.341 [info] GET /sources/16/force_metadata_refresh 13:15:04.343 [debug] QUERY OK source="settings" db=0.9ms queue=0.2ms idle=964.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:15:04.345 [debug] QUERY OK source="settings" db=1.6ms queue=0.2ms idle=964.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:15:04.345 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 13:15:04.347 [error] #PID<0.9656.0> running PinchflatWeb.Endpoint (connection #PID<0.9633.0>, stream id 11) terminated Server: pinchflat.uiau7e.uncld.dev:80 (http) Request: GET /sources/16/force_metadata_refresh ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/16/force_metadata_refresh (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.9633.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/16/force_metadata_refresh", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 46882}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, zstd, deflate", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYb210V2ZqQVF3WE1pNXVaLXZqa21JU1Vh.Ohtt8IAWUg8Lr8nL8sZkJ03clOIGtyLBoHTRYt-6dTM", "host" => "pinchflat.uiau7e.uncld.dev", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)", "via" => "2.0 Caddy", "x-forwarded-for" => "216.73.216.126", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 11, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{ "_pinchflat_key" => "SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYb210V2ZqQVF3WE1pNXVaLXZqa21JU1Vh.Ohtt8IAWUg8Lr8nL8sZkJ03clOIGtyLBoHTRYt-6dTM" }, halted: false, host: "pinchflat.uiau7e.uncld.dev", method: "GET", owner: #PID<0.9656.0>, params: %{}, path_info: ["sources", "16", "force_metadata_refresh"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.uiau7e.uncld.dev", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {10, 210, 0, 2}, req_cookies: %{ "_pinchflat_key" => "SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYb210V2ZqQVF3WE1pNXVaLXZqa21JU1Vh.Ohtt8IAWUg8Lr8nL8sZkJ03clOIGtyLBoHTRYt-6dTM" }, req_headers: [ {"accept", "*/*"}, {"accept-encoding", "gzip, br, zstd, deflate"}, {"cookie", "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYb210V2ZqQVF3WE1pNXVaLXZqa21JU1Vh.Ohtt8IAWUg8Lr8nL8sZkJ03clOIGtyLBoHTRYt-6dTM"}, {"host", "pinchflat.uiau7e.uncld.dev"}, {"user-agent", "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)"}, {"via", "2.0 Caddy"}, {"x-forwarded-for", "216.73.216.126"}, {"x-forwarded-host", "pinchflat.uiau7e.uncld.dev"}, {"x-forwarded-proto", "https"} ], request_path: "/sources/16/force_metadata_refresh", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GIcW2gD3Q9vF__8AAb6h"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.9633.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/16/force_metadata_refresh", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 46882}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, zstd, deflate", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYb210V2ZqQVF3WE1pNXVaLXZqa21JU1Vh.Ohtt8IAWUg8Lr8nL8sZkJ03clOIGtyLBoHTRYt-6dTM", "host" => "pinchflat.uiau7e.uncld.dev", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)", "via" => "2.0 Caddy", "x-forwarded-for" => "216.73.216.126", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 11, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/16/force_metadata_refresh (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.9633.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/16/force_metadata_refresh", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 46882}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, zstd, deflate", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYb210V2ZqQVF3WE1pNXVaLXZqa21JU1Vh.Ohtt8IAWUg8Lr8nL8sZkJ03clOIGtyLBoHTRYt-6dTM", "host" => "pinchflat.uiau7e.uncld.dev", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)", "via" => "2.0 Caddy", "x-forwarded-for" => "216.73.216.126", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 11, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{ "_pinchflat_key" => "SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYb210V2ZqQVF3WE1pNXVaLXZqa21JU1Vh.Ohtt8IAWUg8Lr8nL8sZkJ03clOIGtyLBoHTRYt-6dTM" }, halted: false, host: "pinchflat.uiau7e.uncld.dev", method: "GET", owner: #PID<0.9656.0>, params: %{}, path_info: ["sources", "16", "force_metadata_refresh"], (truncated) 13:15:07.265 [info] GET /sources/14/media/13280/force_download 13:15:07.267 [debug] QUERY OK source="settings" db=0.6ms queue=0.2ms idle=1453.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:15:07.268 [debug] QUERY OK source="settings" db=0.9ms queue=0.2ms idle=1454.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:15:07.268 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 13:15:07.270 [error] #PID<0.9657.0> running PinchflatWeb.Endpoint (connection #PID<0.9633.0>, stream id 12) terminated Server: pinchflat.uiau7e.uncld.dev:80 (http) Request: GET /sources/14/media/13280/force_download ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/14/media/13280/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.9633.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/14/media/13280/force_download", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 46882}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "from" => "gptbot(at)openai.com", "host" => "pinchflat.uiau7e.uncld.dev", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.3; +https://openai.com/gptbot)", "via" => "2.0 Caddy", "x-forwarded-for" => "74.7.227.183", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https", "x-openai-host-hash" => "454925582" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 12, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.uiau7e.uncld.dev", method: "GET", owner: #PID<0.9657.0>, params: %{}, path_info: ["sources", "14", "media", "13280", "force_download"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.uiau7e.uncld.dev", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {10, 210, 0, 2}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"accept-encoding", "gzip, br, deflate"}, {"from", "gptbot(at)openai.com"}, {"host", "pinchflat.uiau7e.uncld.dev"}, {"user-agent", "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.3; +https://openai.com/gptbot)"}, {"via", "2.0 Caddy"}, {"x-forwarded-for", "74.7.227.183"}, {"x-forwarded-host", "pinchflat.uiau7e.uncld.dev"}, {"x-forwarded-proto", "https"}, {"x-openai-host-hash", "454925582"} ], request_path: "/sources/14/media/13280/force_download", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GIcW2q9FWa9IAHsAAb7B"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.9633.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/14/media/13280/force_download", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 46882}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "from" => "gptbot(at)openai.com", "host" => "pinchflat.uiau7e.uncld.dev", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.3; +https://openai.com/gptbot)", "via" => "2.0 Caddy", "x-forwarded-for" => "74.7.227.183", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https", "x-openai-host-hash" => "454925582" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 12, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/14/media/13280/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.9633.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/14/media/13280/force_download", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 46882}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "from" => "gptbot(at)openai.com", "host" => "pinchflat.uiau7e.uncld.dev", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.3; +https://openai.com/gptbot)", "via" => "2.0 Caddy", "x-forwarded-for" => "74.7.227.183", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https", "x-openai-host-hash" => "454925582" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 12, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.uiau7e.uncld.dev", method: "GET", owner: #PID<0.9657.0>, params: %{}, path_info: ["sources", "14", "media", "13280", "force_download"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.uiau7e.uncld.dev", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {10, 210, 0, 2}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"accept-encod (truncated) 13:15:08.322 [info] {"args":{"id":2},"id":202928,"meta":{},"system_time":1767406508321971899,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 13:15:08.324 [debug] QUERY OK source="sources" db=1.2ms queue=0.1ms idle=1014.3ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [2] 13:15:08.325 [debug] QUERY OK source="settings" db=0.8ms queue=0.2ms idle=511.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:15:08.327 [debug] QUERY OK source="media_profiles" db=0.8ms queue=0.1ms idle=512.9ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:15:08.328 [debug] QUERY OK source="settings" db=0.6ms queue=0.1ms idle=12.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:15:08.328 [debug] Fetching recent media IDs from YouTube API for playlist: UUeE3lj6pLX_gCd0Yvns517Q 13:15:08.329 [debug] QUERY OK source="settings" db=0.3ms queue=0.1ms idle=7.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:15:08.329 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 13:15:08.697 [debug] QUERY OK source="media_items" db=2.9ms queue=0.1ms idle=370.1ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND m0."media_id" IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [2, "0k6I__61QDc", "tAnxIOSrasI", "qGmURDZnDhc", "vBsPoGzQPxA", "TiJoEoREmdE", "C-CkKUyzQhA", "K1UWf6n1FmY", "9VKS1P-aXSc", "kt_SNpPa2w4", "oaXa30IfZMc", "pUBcfLBwPXw", "WkG24B0xw1E", "fBQxlA3KI5U", "HbeqOllBS9o", "li1fOq_qqHM", "rsqGEZeczYw", "d7HFMZOp0S4", "oipxUVJUZrc", "cTxE_oPyD9Q", "yJlKrUX8Bvk", "pYtoIdfLeHA", "qPMGKmyQ1AA", "7W651YDFjhc", "EfUXdMBXauI", "804ky1qeBuE", "DRMng-9g9Ng", "Nzp4LPVF_7M", "1psbOjlzkyA", "IwMM9c9Q0Pw", "xhbzG8V0eSA", "-CSyf5_q-XQ", "C__g4XPdYRY", "7-FRyPsqWG0", "0-fliBPsvZI", "xLZYbjMl3hY", "qs36351JQys", "-aty2xx6kTI", "Ty7NA3HvUsk", "w6xdmHLxzSM", "-5YmR5lvMlQ", "fFbRmFdCoYc", "XkPAB-oXAoU", "rTecGGMrRKc", "tHjU0F1najQ", "Z6otzigVvWM", "9m36Ncgctbg", "B1KUJbbpoK0", "rqGLjKlA_tM", "PZDZuoa3kJE", ...] 13:15:08.710 [debug] QUERY OK source="media_items" db=8.8ms queue=0.1ms idle=375.6ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [2] 13:15:08.715 [debug] QUERY OK source="tasks" db=0.7ms queue=0.1ms idle=385.3ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [202952, 2, ~U[2026-01-03 02:15:08Z], ~U[2026-01-03 02:15:08Z]] 13:15:08.716 [info] {"args":{"id":2},"id":202928,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":393754,"event":"job:stop","queue_time":245681,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 13:15:12.584 [info] {"source":"oban","duration":4419,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:15:23.308 [info] GET /sources/18/force_redownload 13:15:23.310 [info] GET /sources/16/force_redownload 13:15:23.310 [debug] QUERY OK source="settings" db=1.1ms queue=0.1ms idle=1496.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:15:23.311 [debug] QUERY OK source="settings" db=0.4ms queue=0.1ms idle=1498.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:15:23.311 [debug] QUERY OK source="settings" db=0.7ms queue=0.1ms idle=1497.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:15:23.311 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 13:15:23.313 [debug] QUERY OK source="settings" db=0.6ms queue=0.1ms idle=1499.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:15:23.313 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 13:15:23.312 [error] #PID<0.9663.0> running PinchflatWeb.Endpoint (connection #PID<0.9662.0>, stream id 1) terminated Server: pinchflat.uiau7e.uncld.dev:80 (http) Request: GET /sources/18/force_redownload ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/18/force_redownload (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.9662.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/18/force_redownload", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 43334}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, zstd, deflate", "host" => "pinchflat.uiau7e.uncld.dev", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)", "via" => "2.0 Caddy", "x-forwarded-for" => "216.73.216.126", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.uiau7e.uncld.dev", method: "GET", owner: #PID<0.9663.0>, params: %{}, path_info: ["sources", "18", "force_redownload"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.uiau7e.uncld.dev", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {10, 210, 0, 2}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"accept-encoding", "gzip, br, zstd, deflate"}, {"host", "pinchflat.uiau7e.uncld.dev"}, {"user-agent", "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)"}, {"via", "2.0 Caddy"}, {"x-forwarded-for", "216.73.216.126"}, {"x-forwarded-host", "pinchflat.uiau7e.uncld.dev"}, {"x-forwarded-proto", "https"} ], request_path: "/sources/18/force_redownload", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GIcW3muHIYm6A88AAb9B"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.9662.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/18/force_redownload", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 43334}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, zstd, deflate", "host" => "pinchflat.uiau7e.uncld.dev", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)", "via" => "2.0 Caddy", "x-forwarded-for" => "216.73.216.126", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/18/force_redownload (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.9662.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/18/force_redownload", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 43334}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, zstd, deflate", "host" => "pinchflat.uiau7e.uncld.dev", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)", "via" => "2.0 Caddy", "x-forwarded-for" => "216.73.216.126", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.uiau7e.uncld.dev", method: "GET", owner: #PID<0.9663.0>, params: %{}, path_info: ["sources", "18", "force_redownload"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.uiau7e.uncld.dev", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {10, 210, 0, 2}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"accept-encoding", "gzip, br, zstd, deflate"}, {"host", "pinchflat.uiau7e.uncld.dev"}, {"user-agent", "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)"}, {"via", "2.0 Caddy"}, {"x-forwarded-for", "216.73.216.126"}, {"x-forwarded-host", "pinchflat.uiau7e.uncld.dev"}, {"x-forwarded-proto", "https"} ], (truncated) 13:15:23.314 [error] #PID<0.9664.0> running PinchflatWeb.Endpoint (connection #PID<0.9661.0>, stream id 1) terminated Server: pinchflat.uiau7e.uncld.dev:80 (http) Request: GET /sources/16/force_redownload ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/16/force_redownload (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.9661.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/16/force_redownload", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 43324}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, zstd, deflate", "host" => "pinchflat.uiau7e.uncld.dev", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)", "via" => "2.0 Caddy", "x-forwarded-for" => "216.73.216.126", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.uiau7e.uncld.dev", method: "GET", owner: #PID<0.9664.0>, params: %{}, path_info: ["sources", "16", "force_redownload"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.uiau7e.uncld.dev", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {10, 210, 0, 2}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"accept-encoding", "gzip, br, zstd, deflate"}, {"host", "pinchflat.uiau7e.uncld.dev"}, {"user-agent", "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)"}, {"via", "2.0 Caddy"}, {"x-forwarded-for", "216.73.216.126"}, {"x-forwarded-host", "pinchflat.uiau7e.uncld.dev"}, {"x-forwarded-proto", "https"} ], request_path: "/sources/16/force_redownload", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GIcW3muhAOOzmHEAAb9h"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.9661.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/16/force_redownload", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 43324}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, zstd, deflate", "host" => "pinchflat.uiau7e.uncld.dev", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)", "via" => "2.0 Caddy", "x-forwarded-for" => "216.73.216.126", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/16/force_redownload (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.9661.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/16/force_redownload", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 43324}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, zstd, deflate", "host" => "pinchflat.uiau7e.uncld.dev", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)", "via" => "2.0 Caddy", "x-forwarded-for" => "216.73.216.126", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.uiau7e.uncld.dev", method: "GET", owner: #PID<0.9664.0>, params: %{}, path_info: ["sources", "16", "force_redownload"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.uiau7e.uncld.dev", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {10, 210, 0, 2}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"accept-encoding", "gzip, br, zstd, deflate"}, {"host", "pinchflat.uiau7e.uncld.dev"}, {"user-agent", "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)"}, {"via", "2.0 Caddy"}, {"x-forwarded-for", "216.73.216.126"}, {"x-forwarded-host", "pinchflat.uiau7e.uncld.dev"}, {"x-forwarded-proto", "https"} ], (truncated) 13:15:23.643 [info] GET /sources/21/media/40805 13:15:23.644 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "40805", "source_id" => "21"} Pipelines: [:browser] 13:15:23.645 [debug] QUERY OK source="media_items" db=0.4ms queue=0.2ms idle=334.3ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [40805] 13:15:23.647 [debug] QUERY OK source="tasks" db=0.4ms queue=0.1ms idle=334.8ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [40805] 13:15:23.648 [debug] QUERY OK source="sources" db=1.1ms idle=335.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [21] 13:15:23.649 [debug] QUERY OK source="settings" db=0.2ms queue=0.1ms idle=336.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:15:23.650 [debug] QUERY OK source="settings" db=0.3ms queue=0.1ms idle=283.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:15:23.652 [debug] QUERY OK source="settings" db=0.3ms queue=0.1ms idle=6.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:15:23.654 [debug] QUERY OK source="media_profiles" db=0.3ms queue=0.1ms idle=7.1ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:15:23.658 [info] Sent 200 in 14ms 13:15:24.145 [info] GET /sources/21/media/58989 13:15:24.146 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "58989", "source_id" => "21"} Pipelines: [:browser] 13:15:24.147 [debug] QUERY OK source="media_items" db=0.4ms idle=499.1ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [58989] 13:15:24.149 [debug] QUERY OK source="tasks" db=0.5ms queue=0.1ms idle=499.0ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [58989] 13:15:24.149 [debug] QUERY OK source="sources" db=0.5ms idle=498.5ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [21] 13:15:24.150 [debug] QUERY OK source="oban_jobs" db=0.3ms idle=498.1ms SELECT o0."id", o0."state", o0."queue", o0."worker", o0."args", o0."meta", o0."tags", o0."errors", o0."attempt", o0."attempted_by", o0."max_attempts", o0."priority", o0."attempted_at", o0."cancelled_at", o0."completed_at", o0."discarded_at", o0."inserted_at", o0."scheduled_at", o0."id" FROM "oban_jobs" AS o0 WHERE (o0."id" = ?) [202136] 13:15:24.152 [debug] QUERY OK source="settings" db=0.3ms queue=0.1ms idle=496.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:15:24.152 [debug] QUERY OK source="settings" db=0.2ms idle=4.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:15:24.153 [debug] QUERY OK source="settings" db=0.3ms idle=4.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:15:24.155 [debug] QUERY OK source="media_profiles" db=0.3ms idle=5.7ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:15:24.177 [info] Sent 200 in 31ms 13:15:24.647 [info] GET /sources/21/media/59018 13:15:24.647 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "59018", "source_id" => "21"} Pipelines: [:browser] 13:15:24.649 [debug] QUERY OK source="media_items" db=0.9ms queue=0.1ms idle=496.3ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [59018] 13:15:24.650 [debug] QUERY OK source="tasks" db=0.7ms idle=497.5ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [59018] 13:15:24.651 [debug] QUERY OK source="sources" db=0.9ms idle=496.2ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [21] 13:15:24.652 [debug] QUERY OK source="settings" db=0.4ms idle=496.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:15:24.653 [debug] QUERY OK source="settings" db=0.3ms idle=283.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:15:24.654 [debug] QUERY OK source="settings" db=0.4ms idle=4.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:15:24.656 [debug] QUERY OK source="media_profiles" db=0.4ms idle=5.2ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:15:24.659 [info] Sent 200 in 12ms 13:15:25.148 [info] GET /sources/21/media/39259/edit 13:15:25.148 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "39259", "source_id" => "21"} Pipelines: [:browser] 13:15:25.151 [debug] QUERY OK source="media_items" db=1.3ms queue=0.1ms idle=498.2ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [39259] 13:15:25.152 [debug] QUERY OK source="settings" db=0.4ms idle=499.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:15:25.152 [debug] QUERY OK source="settings" db=0.3ms idle=499.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:15:25.153 [debug] QUERY OK source="settings" db=0.2ms idle=499.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:15:25.155 [info] Sent 200 in 7ms 13:15:25.663 [info] GET /sources/3/sync_files_on_disk 13:15:25.664 [debug] QUERY OK source="settings" db=0.4ms idle=512.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:15:25.664 [debug] QUERY OK source="settings" db=0.4ms idle=511.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:15:25.664 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 13:15:25.665 [error] #PID<0.9678.0> running PinchflatWeb.Endpoint (connection #PID<0.9661.0>, stream id 6) terminated Server: pinchflat.uiau7e.uncld.dev:80 (http) Request: GET /sources/3/sync_files_on_disk ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/3/sync_files_on_disk (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.9661.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/3/sync_files_on_disk", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 43324}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, zstd, deflate", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYam9HNkFLNUhuUlk1V3JLRkdfX2ZjZGhu.BHf32StdWPr6MDFoF-C6mWwdA4tomUcRNX-25dDPsb4", "host" => "pinchflat.uiau7e.uncld.dev", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)", "via" => "2.0 Caddy", "x-forwarded-for" => "216.73.216.126", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 6, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{ "_pinchflat_key" => "SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYam9HNkFLNUhuUlk1V3JLRkdfX2ZjZGhu.BHf32StdWPr6MDFoF-C6mWwdA4tomUcRNX-25dDPsb4" }, halted: false, host: "pinchflat.uiau7e.uncld.dev", method: "GET", owner: #PID<0.9678.0>, params: %{}, path_info: ["sources", "3", "sync_files_on_disk"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.uiau7e.uncld.dev", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {10, 210, 0, 2}, req_cookies: %{ "_pinchflat_key" => "SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYam9HNkFLNUhuUlk1V3JLRkdfX2ZjZGhu.BHf32StdWPr6MDFoF-C6mWwdA4tomUcRNX-25dDPsb4" }, req_headers: [ {"accept", "*/*"}, {"accept-encoding", "gzip, br, zstd, deflate"}, {"cookie", "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYam9HNkFLNUhuUlk1V3JLRkdfX2ZjZGhu.BHf32StdWPr6MDFoF-C6mWwdA4tomUcRNX-25dDPsb4"}, {"host", "pinchflat.uiau7e.uncld.dev"}, {"user-agent", "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)"}, {"via", "2.0 Caddy"}, {"x-forwarded-for", "216.73.216.126"}, {"x-forwarded-host", "pinchflat.uiau7e.uncld.dev"}, {"x-forwarded-proto", "https"} ], request_path: "/sources/3/sync_files_on_disk", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GIcW3vfa_2oVjFwAAcAh"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.9661.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/3/sync_files_on_disk", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 43324}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, zstd, deflate", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYam9HNkFLNUhuUlk1V3JLRkdfX2ZjZGhu.BHf32StdWPr6MDFoF-C6mWwdA4tomUcRNX-25dDPsb4", "host" => "pinchflat.uiau7e.uncld.dev", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)", "via" => "2.0 Caddy", "x-forwarded-for" => "216.73.216.126", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 6, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/3/sync_files_on_disk (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.9661.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/3/sync_files_on_disk", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 43324}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, zstd, deflate", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYam9HNkFLNUhuUlk1V3JLRkdfX2ZjZGhu.BHf32StdWPr6MDFoF-C6mWwdA4tomUcRNX-25dDPsb4", "host" => "pinchflat.uiau7e.uncld.dev", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)", "via" => "2.0 Caddy", "x-forwarded-for" => "216.73.216.126", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 6, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{ "_pinchflat_key" => "SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYam9HNkFLNUhuUlk1V3JLRkdfX2ZjZGhu.BHf32StdWPr6MDFoF-C6mWwdA4tomUcRNX-25dDPsb4" }, halted: false, host: "pinchflat.uiau7e.uncld.dev", method: "GET", owner: #PID<0.9678.0>, params: %{}, path_info: ["sources", "3", "sync_files_on_disk"], path_params: %{}, port: 80, (truncated) 13:15:26.149 [info] GET /sources/21/media/58995 13:15:26.149 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "58995", "source_id" => "21"} Pipelines: [:browser] 13:15:26.151 [debug] QUERY OK source="media_items" db=0.9ms queue=0.1ms idle=997.6ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [58995] 13:15:26.153 [debug] QUERY OK source="tasks" db=0.9ms queue=0.1ms idle=998.6ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [58995] 13:15:26.153 [debug] QUERY OK source="sources" db=1.1ms idle=781.5ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [21] 13:15:26.155 [debug] QUERY OK source="oban_jobs" db=0.6ms queue=0.1ms idle=490.3ms SELECT o0."id", o0."state", o0."queue", o0."worker", o0."args", o0."meta", o0."tags", o0."errors", o0."attempt", o0."attempted_by", o0."max_attempts", o0."priority", o0."attempted_at", o0."cancelled_at", o0."completed_at", o0."discarded_at", o0."inserted_at", o0."scheduled_at", o0."id" FROM "oban_jobs" AS o0 WHERE (o0."id" = ?) [202137] 13:15:26.156 [debug] QUERY OK source="settings" db=0.3ms queue=0.1ms idle=491.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:15:26.156 [debug] QUERY OK source="settings" db=0.3ms queue=0.1ms idle=4.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:15:26.158 [debug] QUERY OK source="settings" db=0.3ms idle=4.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:15:26.160 [debug] QUERY OK source="media_profiles" db=0.2ms idle=5.6ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:15:26.181 [info] Sent 200 in 31ms 13:15:26.650 [info] GET /sources/21/media/39508/edit 13:15:26.651 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "39508", "source_id" => "21"} Pipelines: [:browser] 13:15:26.653 [debug] QUERY OK source="media_items" db=0.5ms queue=0.1ms idle=496.0ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [39508] 13:15:26.654 [debug] QUERY OK source="settings" db=0.3ms idle=496.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:15:26.655 [debug] QUERY OK source="settings" db=0.7ms idle=496.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:15:26.656 [debug] QUERY OK source="settings" db=0.3ms idle=496.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:15:26.658 [info] Sent 200 in 7ms 13:15:27.161 [info] GET /sources/21/media/59005/edit 13:15:27.161 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "59005", "source_id" => "21"} Pipelines: [:browser] 13:15:27.163 [debug] QUERY OK source="media_items" db=0.6ms queue=0.1ms idle=789.1ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [59005] 13:15:27.164 [debug] QUERY OK source="settings" db=0.3ms idle=511.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:15:27.165 [debug] QUERY OK source="settings" db=0.6ms idle=510.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:15:27.166 [debug] QUERY OK source="settings" db=0.2ms queue=0.1ms idle=510.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:15:27.168 [info] Sent 200 in 6ms 13:15:27.659 [info] GET /sources/21/media/41262 13:15:27.659 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "41262", "source_id" => "21"} Pipelines: [:browser] 13:15:27.661 [debug] QUERY OK source="media_items" db=0.4ms queue=0.1ms idle=497.2ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [41262] 13:15:27.662 [debug] QUERY OK source="tasks" db=0.5ms idle=497.6ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [41262] 13:15:27.663 [debug] QUERY OK source="sources" db=0.4ms idle=497.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [21] 13:15:27.664 [debug] QUERY OK source="settings" db=0.3ms idle=497.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:15:27.665 [debug] QUERY OK source="settings" db=0.4ms idle=288.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:15:27.666 [debug] QUERY OK source="settings" db=0.2ms idle=4.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:15:27.668 [debug] QUERY OK source="media_profiles" db=0.3ms idle=4.7ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:15:27.711 [info] Sent 200 in 52ms 13:15:28.151 [info] GET /sources/21/media/39269 13:15:28.151 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "39269", "source_id" => "21"} Pipelines: [:browser] 13:15:28.153 [debug] QUERY OK source="media_items" db=1.0ms queue=0.1ms idle=489.5ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [39269] 13:15:28.155 [debug] QUERY OK source="tasks" db=0.7ms idle=490.2ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [39269] 13:15:28.155 [debug] QUERY OK source="sources" db=0.9ms idle=489.6ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [21] 13:15:28.156 [debug] QUERY OK source="settings" db=0.2ms idle=490.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:15:28.157 [debug] QUERY OK source="settings" db=0.2ms idle=488.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:15:28.158 [debug] QUERY OK source="settings" db=0.2ms idle=4.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:15:28.160 [debug] QUERY OK source="media_profiles" db=0.3ms idle=5.1ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:15:28.164 [info] Sent 200 in 13ms 13:15:42.586 [info] {"source":"oban","duration":1755,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:16:00.140 [info] {"source":"oban","duration":1323,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 13:16:04.483 [info] {"args":{"id":26},"id":202929,"meta":{},"system_time":1767406564482943208,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 13:16:04.484 [debug] QUERY OK source="sources" db=0.7ms idle=670.4ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [26] 13:16:04.485 [debug] QUERY OK source="settings" db=0.7ms idle=671.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:16:04.486 [debug] QUERY OK source="media_profiles" db=0.6ms idle=672.7ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:16:04.487 [debug] QUERY OK source="settings" db=0.5ms idle=12.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:16:04.487 [debug] Fetching recent media IDs from YouTube API for playlist: UU6NY7eg1FxCfAVX58yL0cJw 13:16:04.488 [debug] QUERY OK source="settings" db=0.4ms idle=4.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:16:04.488 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 13:16:05.020 [debug] QUERY OK source="media_items" db=4.1ms idle=531.8ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND m0."media_id" IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [26, "o2tiLxanOd0", "3Hkalon06bY", "acwCbVzHnRM", "m3Cddar422Y", "QItYx18RK4M", "iFrwlymvtTM", "CBKzBKWhNmE", "twi0ZP1ZWew", "MChkfGtdrgI", "usOf_0SOPl8", "7CamgxCV_lg", "CYW3qAtbiSg", "hkLPA0MEUFk", "Z9APq63an58", "MA2a2BtDQtE", "a23hasz0yk8", "o4tK4PhiK_c", "2-lUv1_A_KU", "W6GGXQ4xVdg", "TOIuoWmEqxo", "JRXSDo6asDk", "iAodr4mipf0", "12wArTNB9dk", "CFZ0TtEbofU", "RwW6yAVtf6Q", "9RshF2jpgLo", "MV8U7XQUpnY", "G0o-l5G0M4s", "FVOkr5w0O0I", "1IFJive9Bvc", "kuc2kAgYD8M", "jHOE86EMHvA", "CjuPAweX08c", "LH0RNHxukJs", "o6OxlF4vAuw", "Qxfr7h-PzdA", "xU_1w6OSnac", "-6G1TNBxp08", "o-ripoq_oXU", "Uevcwu2GLMs", "BAoXgNQ_wRI", "p4NWPk9B20I", "XKxqsR_4w_I", "BNtAWc-vLX4", "ktw-dS-26Gk", "Idbcu-oVtDs", "JCxqgAhaJj4", "A0vzWxUO5TA", "6M0wfDl0LEI", ...] 13:16:05.030 [debug] QUERY OK source="media_items" db=8.1ms idle=536.3ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [26] 13:16:05.034 [debug] QUERY OK source="tasks" db=0.7ms idle=545.4ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [202953, 26, ~U[2026-01-03 02:16:05Z], ~U[2026-01-03 02:16:05Z]] 13:16:05.035 [info] {"args":{"id":26},"id":202929,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":551671,"event":"job:stop","queue_time":315246,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 13:16:08.673 [info] GET /sources/23/media/21391/force_download 13:16:08.674 [debug] QUERY OK source="settings" db=0.5ms idle=1861.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:16:08.675 [debug] QUERY OK source="settings" db=0.4ms idle=1862.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:16:08.675 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 13:16:08.676 [error] #PID<0.9697.0> running PinchflatWeb.Endpoint (connection #PID<0.9696.0>, stream id 1) terminated Server: pinchflat.uiau7e.uncld.dev:80 (http) Request: GET /sources/23/media/21391/force_download ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/23/media/21391/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.9696.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/23/media/21391/force_download", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 52594}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "from" => "gptbot(at)openai.com", "host" => "pinchflat.uiau7e.uncld.dev", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.3; +https://openai.com/gptbot)", "via" => "2.0 Caddy", "x-forwarded-for" => "74.7.227.183", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https", "x-openai-host-hash" => "454925582" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.uiau7e.uncld.dev", method: "GET", owner: #PID<0.9697.0>, params: %{}, path_info: ["sources", "23", "media", "21391", "force_download"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.uiau7e.uncld.dev", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {10, 210, 0, 2}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"accept-encoding", "gzip, br, deflate"}, {"from", "gptbot(at)openai.com"}, {"host", "pinchflat.uiau7e.uncld.dev"}, {"user-agent", "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.3; +https://openai.com/gptbot)"}, {"via", "2.0 Caddy"}, {"x-forwarded-for", "74.7.227.183"}, {"x-forwarded-host", "pinchflat.uiau7e.uncld.dev"}, {"x-forwarded-proto", "https"}, {"x-openai-host-hash", "454925582"} ], request_path: "/sources/23/media/21391/force_download", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GIcW6Pt-abRlLWMAALWi"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.9696.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/23/media/21391/force_download", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 52594}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "from" => "gptbot(at)openai.com", "host" => "pinchflat.uiau7e.uncld.dev", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.3; +https://openai.com/gptbot)", "via" => "2.0 Caddy", "x-forwarded-for" => "74.7.227.183", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https", "x-openai-host-hash" => "454925582" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/23/media/21391/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.9696.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/23/media/21391/force_download", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 52594}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "from" => "gptbot(at)openai.com", "host" => "pinchflat.uiau7e.uncld.dev", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.3; +https://openai.com/gptbot)", "via" => "2.0 Caddy", "x-forwarded-for" => "74.7.227.183", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https", "x-openai-host-hash" => "454925582" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.uiau7e.uncld.dev", method: "GET", owner: #PID<0.9697.0>, params: %{}, path_info: ["sources", "23", "media", "21391", "force_download"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.uiau7e.uncld.dev", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {10, 210, 0, 2}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"accept-encoding" (truncated) 13:16:12.590 [info] {"source":"oban","duration":2998,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:16:24.080 [info] GET /sources/21/media/59038/edit 13:16:24.080 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "59038", "source_id" => "21"} Pipelines: [:browser] 13:16:24.082 [info] GET /sources/21/media/59023/edit 13:16:24.082 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "59023", "source_id" => "21"} Pipelines: [:browser] 13:16:24.082 [debug] QUERY OK source="media_items" db=0.6ms queue=0.2ms idle=1269.0ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [59038] 13:16:24.083 [debug] QUERY OK source="media_items" db=0.9ms idle=552.4ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [59023] 13:16:24.084 [debug] QUERY OK source="settings" db=0.6ms idle=270.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:16:24.084 [debug] QUERY OK source="settings" db=1.2ms idle=270.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:16:24.085 [debug] QUERY OK source="settings" db=0.4ms queue=0.2ms idle=271.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:16:24.086 [debug] QUERY OK source="settings" db=1.1ms queue=0.1ms idle=2.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:16:24.087 [debug] QUERY OK source="settings" db=0.3ms idle=3.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:16:24.087 [debug] QUERY OK source="settings" db=0.2ms queue=0.1ms idle=2.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:16:24.089 [info] Sent 200 in 7ms 13:16:24.090 [info] Sent 200 in 10ms 13:16:24.991 [info] GET /sources/21/media/59028/edit 13:16:24.992 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "59028", "source_id" => "21"} Pipelines: [:browser] 13:16:24.993 [debug] QUERY OK source="media_items" db=0.5ms queue=0.1ms idle=907.3ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [59028] 13:16:24.995 [debug] QUERY OK source="settings" db=0.4ms queue=0.1ms idle=908.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:16:24.996 [debug] QUERY OK source="settings" db=0.2ms idle=908.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:16:24.998 [debug] QUERY OK source="settings" db=0.4ms queue=0.1ms idle=910.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:16:25.000 [info] Sent 200 in 8ms 13:16:25.491 [info] GET /sources/21/media/58984/edit 13:16:25.491 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "58984", "source_id" => "21"} Pipelines: [:browser] 13:16:25.493 [debug] QUERY OK source="media_items" db=0.5ms queue=0.1ms idle=958.9ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [58984] 13:16:25.495 [debug] QUERY OK source="settings" db=0.5ms queue=0.1ms idle=500.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:16:25.495 [debug] QUERY OK source="settings" db=0.3ms idle=499.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:16:25.496 [debug] QUERY OK source="settings" db=0.3ms idle=500.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:16:25.499 [info] Sent 200 in 8ms 13:16:25.999 [info] GET /sources/21/media/59033/edit 13:16:25.999 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "59033", "source_id" => "21"} Pipelines: [:browser] 13:16:26.000 [debug] QUERY OK source="media_items" db=0.4ms idle=506.8ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [59033] 13:16:26.001 [debug] QUERY OK source="settings" db=0.2ms idle=506.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:16:26.002 [debug] QUERY OK source="settings" db=0.4ms idle=505.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:16:26.003 [debug] QUERY OK source="settings" db=0.4ms idle=505.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:16:26.005 [info] Sent 200 in 5ms 13:16:26.499 [info] GET /sources/21/media/58974/edit 13:16:26.499 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "58974", "source_id" => "21"} Pipelines: [:browser] 13:16:26.500 [debug] QUERY OK source="media_items" db=0.5ms idle=963.9ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [58974] 13:16:26.501 [debug] QUERY OK source="settings" db=0.4ms idle=500.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:16:26.501 [debug] QUERY OK source="settings" db=0.4ms queue=0.1ms idle=500.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:16:26.502 [debug] QUERY OK source="settings" db=0.4ms idle=500.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:16:26.504 [info] Sent 200 in 5ms 13:16:27.003 [info] GET /sources/21/media/58979/edit 13:16:27.003 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "58979", "source_id" => "21"} Pipelines: [:browser] 13:16:27.004 [debug] QUERY OK source="media_items" db=0.7ms idle=503.7ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [58979] 13:16:27.005 [debug] QUERY OK source="settings" db=0.6ms idle=504.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:16:27.006 [debug] QUERY OK source="settings" db=0.4ms idle=504.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:16:27.007 [debug] QUERY OK source="settings" db=0.4ms idle=504.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:16:27.010 [info] Sent 200 in 7ms 13:16:27.293 [info] GET /sources/21/media/59074/edit 13:16:27.293 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "59074", "source_id" => "21"} Pipelines: [:browser] 13:16:27.295 [debug] QUERY OK source="media_items" db=0.8ms queue=0.2ms idle=756.1ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [59074] 13:16:27.297 [debug] QUERY OK source="settings" db=0.4ms queue=0.1ms idle=291.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:16:27.298 [debug] QUERY OK source="settings" db=0.5ms queue=0.1ms idle=291.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:16:27.299 [debug] QUERY OK source="settings" db=0.2ms queue=0.1ms idle=292.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:16:27.302 [info] Sent 200 in 9ms 13:16:27.596 [info] GET /sources/21/media/40805/edit 13:16:27.596 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "40805", "source_id" => "21"} Pipelines: [:browser] 13:16:27.597 [debug] QUERY OK source="media_items" db=0.4ms idle=301.8ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [40805] 13:16:27.599 [debug] QUERY OK source="settings" db=0.4ms idle=301.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:16:27.599 [debug] QUERY OK source="settings" db=0.3ms queue=0.1ms idle=301.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:16:27.601 [debug] QUERY OK source="settings" db=0.3ms queue=0.1ms idle=301.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:16:27.604 [info] Sent 200 in 8ms 13:16:27.896 [info] GET /sources/21/media/59069 13:16:27.896 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "59069", "source_id" => "21"} Pipelines: [:browser] 13:16:27.898 [debug] QUERY OK source="media_items" db=0.5ms queue=0.1ms idle=356.3ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [59069] 13:16:27.899 [debug] QUERY OK source="tasks" db=0.4ms idle=301.0ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [59069] 13:16:27.899 [debug] QUERY OK source="sources" db=0.4ms idle=299.9ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [21] 13:16:27.900 [debug] QUERY OK source="settings" db=0.3ms idle=300.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:16:27.901 [debug] QUERY OK source="settings" db=0.2ms queue=0.1ms idle=299.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:16:27.902 [debug] QUERY OK source="settings" db=0.3ms queue=0.1ms idle=4.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:16:27.904 [debug] QUERY OK source="media_profiles" db=0.2ms idle=5.0ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:16:27.908 [info] Sent 200 in 12ms 13:16:28.196 [info] GET /sources/21/force_download_pending 13:16:28.197 [debug] QUERY OK source="settings" db=0.2ms idle=297.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:16:28.197 [debug] QUERY OK source="settings" db=0.2ms idle=296.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:16:28.197 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 13:16:28.198 [error] #PID<0.9715.0> running PinchflatWeb.Endpoint (connection #PID<0.9700.0>, stream id 10) terminated Server: pinchflat.uiau7e.uncld.dev:80 (http) Request: GET /sources/21/force_download_pending ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/21/force_download_pending (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.9700.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/21/force_download_pending", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 56892}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, zstd, deflate", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYazRRb2pUenR3TlVYLS1WNGczVzVmODdR.QZP4KhctlIzbOSIR1q8DSpEovKtvuJfhLIfOJhdKUEA", "host" => "pinchflat.uiau7e.uncld.dev", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)", "via" => "2.0 Caddy", "x-forwarded-for" => "216.73.216.126", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 10, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{ "_pinchflat_key" => "SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYazRRb2pUenR3TlVYLS1WNGczVzVmODdR.QZP4KhctlIzbOSIR1q8DSpEovKtvuJfhLIfOJhdKUEA" }, halted: false, host: "pinchflat.uiau7e.uncld.dev", method: "GET", owner: #PID<0.9715.0>, params: %{}, path_info: ["sources", "21", "force_download_pending"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.uiau7e.uncld.dev", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {10, 210, 0, 2}, req_cookies: %{ "_pinchflat_key" => "SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYazRRb2pUenR3TlVYLS1WNGczVzVmODdR.QZP4KhctlIzbOSIR1q8DSpEovKtvuJfhLIfOJhdKUEA" }, req_headers: [ {"accept", "*/*"}, {"accept-encoding", "gzip, br, zstd, deflate"}, {"cookie", "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYazRRb2pUenR3TlVYLS1WNGczVzVmODdR.QZP4KhctlIzbOSIR1q8DSpEovKtvuJfhLIfOJhdKUEA"}, {"host", "pinchflat.uiau7e.uncld.dev"}, {"user-agent", "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)"}, {"via", "2.0 Caddy"}, {"x-forwarded-for", "216.73.216.126"}, {"x-forwarded-host", "pinchflat.uiau7e.uncld.dev"}, {"x-forwarded-proto", "https"} ], request_path: "/sources/21/force_download_pending", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GIcW7YcgdQ9iTc0AAcMB"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.9700.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/21/force_download_pending", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 56892}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, zstd, deflate", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYazRRb2pUenR3TlVYLS1WNGczVzVmODdR.QZP4KhctlIzbOSIR1q8DSpEovKtvuJfhLIfOJhdKUEA", "host" => "pinchflat.uiau7e.uncld.dev", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)", "via" => "2.0 Caddy", "x-forwarded-for" => "216.73.216.126", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 10, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/21/force_download_pending (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.9700.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/21/force_download_pending", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 56892}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, zstd, deflate", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYazRRb2pUenR3TlVYLS1WNGczVzVmODdR.QZP4KhctlIzbOSIR1q8DSpEovKtvuJfhLIfOJhdKUEA", "host" => "pinchflat.uiau7e.uncld.dev", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)", "via" => "2.0 Caddy", "x-forwarded-for" => "216.73.216.126", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 10, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{ "_pinchflat_key" => "SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYazRRb2pUenR3TlVYLS1WNGczVzVmODdR.QZP4KhctlIzbOSIR1q8DSpEovKtvuJfhLIfOJhdKUEA" }, halted: false, host: "pinchflat.uiau7e.uncld.dev", method: "GET", owner: #PID<0.9715.0>, params: %{}, path_info: ["sources", "21", "force_download_pending"], (truncated) 13:16:28.499 [info] GET /sources/21/media/59023 13:16:28.499 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "59023", "source_id" => "21"} Pipelines: [:browser] 13:16:28.500 [debug] QUERY OK source="media_items" db=0.9ms idle=598.5ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [59023] 13:16:28.502 [debug] QUERY OK source="tasks" db=1.3ms idle=598.5ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [59023] 13:16:28.503 [debug] QUERY OK source="sources" db=1.7ms idle=596.8ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [21] 13:16:28.504 [debug] QUERY OK source="settings" db=0.5ms idle=306.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:16:28.505 [debug] QUERY OK source="settings" db=0.4ms idle=306.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:16:28.506 [debug] QUERY OK source="settings" db=0.3ms idle=4.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:16:28.507 [debug] QUERY OK source="media_profiles" db=0.4ms idle=4.4ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:16:28.510 [info] Sent 200 in 10ms 13:16:37.576 [info] {"args":{"id":10},"id":202930,"meta":{},"system_time":1767406597576678720,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 13:16:37.577 [debug] QUERY OK source="sources" db=0.4ms idle=1764.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [10] 13:16:37.578 [debug] QUERY OK source="settings" db=0.3ms idle=1764.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:16:37.578 [debug] QUERY OK source="media_profiles" db=0.2ms idle=1012.5ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:16:37.579 [debug] QUERY OK source="settings" db=0.4ms idle=9.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:16:37.579 [debug] Fetching recent media IDs from YouTube API for playlist: UUmHz7DQbbkcY_UoWY8bBJLw 13:16:37.580 [debug] QUERY OK source="settings" db=1.0ms idle=3.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:16:37.581 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 13:16:37.948 [debug] QUERY OK source="media_items" db=5.9ms idle=365.0ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND m0."media_id" IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [10, "PhjtM9ePmYY", "BYRqpIciNLg", "KKoDQ42Fcpk", "AifAIqHezb8", "sjsS60OTXSQ", "KVouvdlUtGQ", "Th4RJNVZN3Q", "a9Zj-iWYC4w", "Z2_oFD9DMd0", "OW9WywZF_d4", "hFSwWzxrqUA", "XsPrNwyLDJM", "9NUcKPnPMEw", "GvP1jo9RstE", "8jul3DEwgMY", "e4K0Co-JeKQ", "wxoYf3KBlis", "YFQm8Hk73ug", "iu5rnQkfO6M", "RESslu3Bhuk", "vn9VDbacUgQ", "mLozqDnhqpQ", "GWXCCBsOMSg", "OXIpbrvFxfE", "hbZb1Q0mM7k", "lj2JTO1L1Tc", "dGjMw1SkmjU", "vBQFfmlTK_4", "91WqepC8kS0", "UUZfxQhKmfA", "aPsq5nqvhxg", "AJ7atBkisOU", "2fZ0nkP5dfo", "qKZXQGCLRJY", "F26dxTMmW10", "cYPuhhATDXc", "uLrOyIpjkZ8", "kDu56nXRqGQ", "I4lBTlClwww", "h23xksD0dN0", "SgameZUfeGo", "NPgbgiRJCxA", "-v88e4T8i_E", "HkgV_-nJOuE", "3h1vM0lIrpM", "gjExqY_iB38", "5ScP_aPBEiQ", "t5CkW-CKTZs", "gKKRYcy4BbU", ...] 13:16:37.950 [debug] QUERY OK source="settings" db=0.5ms idle=371.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:16:37.951 [debug] QUERY OK source="settings" db=0.4ms idle=371.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:16:37.951 [debug] Running yt-dlp command for action: get_media_attributes 13:16:37.952 [debug] QUERY OK source="settings" db=0.3ms idle=373.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:16:37.953 [debug] QUERY OK source="settings" db=0.2ms idle=372.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:16:37.953 [debug] QUERY OK source="settings" db=0.3ms idle=4.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:16:37.954 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=Z2_oFD9DMd0 --simulate --skip-download --output /downloads/Switch Angel/Season %(upload_date>%Y)S/s%(upload_date>%Y)Se%(upload_date>%m%d)S00 - %(title)S.%(ext)S --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --print-to-file %(.{id,title,live_status,original_url,description,aspect_ratio,duration,upload_date,timestamp,playlist_index,filename})j /tmp/pinchflat/data/b5/f5/b5f5ecf68b1c5a587934cdfd62260575db2e94303274fe5810ac0c19bbff7fd4.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 13:16:38.581 [info] {"args":{"id":6},"id":202931,"meta":{},"system_time":1767406598581746176,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 13:16:38.583 [debug] QUERY OK source="sources" db=0.8ms queue=0.2ms idle=629.7ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [6] 13:16:38.585 [debug] QUERY OK source="settings" db=0.7ms queue=0.1ms idle=630.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:16:38.586 [debug] QUERY OK source="media_profiles" db=0.9ms queue=0.1ms idle=631.7ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:16:38.588 [debug] QUERY OK source="settings" db=1.3ms queue=0.1ms idle=13.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:16:38.588 [debug] Fetching recent media IDs from YouTube API for playlist: UUg0m_Ah8P_MQbnn77-vYnYw 13:16:38.590 [debug] QUERY OK source="settings" db=0.5ms queue=0.2ms idle=7.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:16:38.590 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 13:16:39.101 [debug] QUERY OK source="media_items" db=2.5ms idle=514.8ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND m0."media_id" IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [6, "9i6Qm3LV89c", "2PC3HH4izX4", "dJLpdoPNdZ8", "lqRHAbkn9bo", "nlYgNjtr904", "uHKLZ8LcCJA", "V3LW3EWUxqE", "XaTvV6zJEXk", "AjnHxtnxMhk", "vuJTLm11QmQ", "vUzRuvCi6lw", "NlxSd2y_gfI", "ivcFXtMGdE8", "m17ugzx_Ab4", "o5QiLKbHeMI", "moqdU9sMrRk", "Yi55tGTEMqQ", "rHliVvnQ5Pg", "nCZSTFM-v9k", "uasm2RENDH4", "musiLNtEyRY", "uSvqlME0IsI", "Yo0hmtg8LNc", "HOFD3h9Up9w", "uibJMXaSB7c", "NGq1EoY_r2I", "IL-UZlbO3zI", "-_txeeBP6dg", "iH7BiZvsczM", "rIKuiZVHfZo", "HRw20b6hb_s", "xOQPha-de4A", "L6IXwj-_X1k", "_7--BDD2pxk", "Xaq53-12iW8", "bfb-ZBwdvpo", "3DLbHio3ivA", "xhpwyar65ms", "UzEr8RISXds", "tHU6PeO4WDs", "2z1AaBGzA1g", "y-t3hyj7Mz8", "5ZUXEQ6d0dM", "pn8GF5HaKZc", "wH3XASrC2DA", "C_oeOAG0G5E", "c8gYHg1lZCg", "cPEXUpZ6CWk", "jST7T0L_k_w", ...] 13:16:39.109 [debug] QUERY OK source="media_items" db=2.6ms queue=0.1ms idle=521.0ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [6] 13:16:39.112 [debug] QUERY OK source="tasks" db=0.4ms idle=521.4ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [202954, 6, ~U[2026-01-03 02:16:39Z], ~U[2026-01-03 02:16:39Z]] 13:16:39.113 [info] {"args":{"id":6},"id":202931,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":530390,"event":"job:stop","queue_time":309300,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 13:16:39.673 [info] GET /sources/3/media/40436 13:16:39.673 [info] GET /sources/3/media/46044 13:16:39.673 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "46044", "source_id" => "3"} Pipelines: [:browser] 13:16:39.673 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "40436", "source_id" => "3"} Pipelines: [:browser] 13:16:39.673 [info] GET /sources/3/media/59017 13:16:39.674 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "59017", "source_id" => "3"} Pipelines: [:browser] 13:16:39.674 [debug] QUERY OK source="media_items" db=0.6ms idle=562.4ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [46044] 13:16:39.675 [debug] QUERY OK source="tasks" db=0.5ms idle=554.5ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [46044] 13:16:39.675 [debug] QUERY OK source="media_items" db=1.2ms queue=0.1ms idle=562.0ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [40436] 13:16:39.675 [debug] QUERY OK source="media_items" db=0.9ms queue=0.1ms idle=561.3ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [59017] 13:16:39.675 [debug] QUERY OK source="sources" db=0.6ms queue=0.1ms idle=97.5ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [3] 13:16:39.677 [debug] QUERY OK source="settings" db=0.9ms idle=0.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:16:39.677 [debug] QUERY OK source="tasks" db=1.2ms idle=0.6ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [40436] 13:16:39.678 [debug] QUERY OK source="tasks" db=1.8ms idle=1.4ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [59017] 13:16:39.678 [debug] QUERY OK source="sources" db=1.9ms idle=0.7ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [3] 13:16:39.678 [debug] QUERY OK source="sources" db=1.8ms idle=0.7ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [3] 13:16:39.678 [debug] QUERY OK source="settings" db=0.7ms idle=0.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:16:39.680 [debug] QUERY OK source="settings" db=0.9ms idle=1.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:16:39.679 [debug] QUERY OK source="settings" db=0.9ms idle=1.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:16:39.680 [debug] QUERY OK source="settings" db=0.9ms idle=1.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:16:39.680 [debug] QUERY OK source="settings" db=0.3ms idle=1.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:16:39.680 [debug] QUERY OK source="settings" db=0.4ms idle=1.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:16:39.682 [debug] QUERY OK source="settings" db=0.3ms idle=1.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:16:39.682 [debug] QUERY OK source="media_profiles" db=0.5ms queue=0.1ms idle=1.3ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:16:39.682 [debug] QUERY OK source="settings" db=1.0ms idle=1.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:16:39.685 [debug] QUERY OK source="media_profiles" db=1.6ms idle=2.7ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:16:39.686 [debug] QUERY OK source="media_profiles" db=0.7ms queue=0.6ms idle=4.3ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:16:39.687 [info] Sent 200 in 13ms 13:16:39.710 [info] Sent 200 in 36ms 13:16:39.739 [info] Sent 200 in 65ms 13:16:40.578 [info] GET /sources/3/media/51645/edit 13:16:40.579 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "51645", "source_id" => "3"} Pipelines: [:browser] 13:16:40.580 [debug] QUERY OK source="media_items" db=0.5ms idle=897.1ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [51645] 13:16:40.581 [debug] QUERY OK source="settings" db=0.3ms idle=898.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:16:40.583 [debug] QUERY OK source="settings" db=1.3ms idle=896.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:16:40.584 [debug] QUERY OK source="settings" db=0.2ms queue=0.1ms idle=897.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:16:40.587 [info] Sent 200 in 8ms 13:16:40.883 [info] GET /sources/16/media/39280 13:16:40.883 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "39280", "source_id" => "16"} Pipelines: [:browser] 13:16:40.884 [debug] QUERY OK source="media_items" db=0.2ms idle=304.2ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [39280] 13:16:40.885 [debug] QUERY OK source="sources" db=0.2ms idle=303.4ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [16] 13:16:40.885 [debug] QUERY OK source="tasks" db=0.3ms queue=0.1ms idle=304.5ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [39280] 13:16:40.886 [debug] QUERY OK source="settings" db=0.2ms idle=302.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:16:40.886 [debug] QUERY OK source="settings" db=0.1ms idle=301.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:16:40.887 [debug] QUERY OK source="settings" db=0.2ms idle=2.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:16:40.889 [debug] QUERY OK source="media_profiles" db=0.7ms queue=0.1ms idle=3.2ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:16:40.919 [info] Sent 200 in 36ms 13:16:41.183 [info] GET /sources/3/media/36046 13:16:41.183 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "36046", "source_id" => "3"} Pipelines: [:browser] 13:16:41.185 [debug] QUERY OK source="media_items" db=0.7ms queue=0.2ms idle=299.3ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [36046] 13:16:41.186 [debug] QUERY OK source="tasks" db=0.5ms idle=299.9ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [36046] 13:16:41.187 [debug] QUERY OK source="sources" db=1.3ms idle=299.7ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [3] 13:16:41.189 [debug] QUERY OK source="settings" db=0.4ms idle=301.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:16:41.191 [debug] QUERY OK source="settings" db=0.9ms idle=300.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:16:41.192 [debug] QUERY OK source="settings" db=0.3ms queue=0.1ms idle=6.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:16:41.195 [debug] QUERY OK source="media_profiles" db=0.4ms queue=0.1ms idle=8.3ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:16:41.215 [info] Sent 200 in 32ms 13:16:41.484 [info] GET /sources/3/media/51645 13:16:41.484 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "51645", "source_id" => "3"} Pipelines: [:browser] 13:16:41.485 [debug] QUERY OK source="media_items" db=0.9ms queue=0.1ms idle=297.2ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [51645] 13:16:41.487 [debug] QUERY OK source="tasks" db=0.9ms idle=296.6ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [51645] 13:16:41.487 [debug] QUERY OK source="sources" db=1.1ms idle=295.5ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [3] 13:16:41.488 [debug] QUERY OK source="settings" db=0.2ms idle=295.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:16:41.488 [debug] QUERY OK source="settings" db=0.2ms idle=292.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:16:41.489 [debug] QUERY OK source="settings" db=0.2ms idle=3.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:16:41.490 [debug] QUERY OK source="media_profiles" db=0.3ms idle=2.8ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:16:41.496 [info] Sent 200 in 12ms 13:16:41.811 [info] GET /sources/18/media/59080/edit 13:16:41.811 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "59080", "source_id" => "18"} Pipelines: [:browser] 13:16:41.812 [debug] QUERY OK source="media_items" db=0.4ms queue=0.1ms idle=323.4ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [59080] 13:16:41.813 [debug] QUERY OK source="settings" db=0.4ms queue=0.1ms idle=324.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:16:41.814 [debug] QUERY OK source="settings" db=0.5ms idle=324.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:16:41.815 [debug] QUERY OK source="settings" db=0.6ms idle=324.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:16:41.817 [info] Sent 200 in 6ms 13:16:42.040 [info] GET /sources/18/media/43313/edit 13:16:42.041 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "43313", "source_id" => "18"} Pipelines: [:browser] 13:16:42.042 [debug] QUERY OK source="media_items" db=0.8ms idle=460.3ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [43313] 13:16:42.043 [debug] QUERY OK source="settings" db=0.5ms idle=230.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:16:42.044 [debug] QUERY OK source="settings" db=0.4ms idle=230.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:16:42.045 [debug] QUERY OK source="settings" db=0.5ms idle=230.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:16:42.046 [info] Sent 200 in 5ms 13:16:42.246 [info] GET /sources/18/media/59080 13:16:42.247 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "59080", "source_id" => "18"} Pipelines: [:browser] 13:16:42.248 [debug] QUERY OK source="media_items" db=1.1ms queue=0.1ms idle=431.8ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [59080] 13:16:42.250 [debug] QUERY OK source="tasks" db=1.3ms idle=205.8ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [59080] 13:16:42.251 [debug] QUERY OK source="sources" db=1.6ms idle=206.9ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [18] 13:16:42.252 [debug] QUERY OK source="settings" db=0.5ms idle=207.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:16:42.253 [debug] QUERY OK source="settings" db=0.5ms idle=207.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:16:42.254 [debug] QUERY OK source="settings" db=0.5ms idle=4.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:16:42.256 [debug] QUERY OK source="media_profiles" db=0.9ms idle=4.4ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:16:42.258 [info] Sent 200 in 11ms 13:16:42.492 [info] GET /sources/21/media/58999/edit 13:16:42.493 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "58999", "source_id" => "21"} Pipelines: [:browser] 13:16:42.494 [debug] QUERY OK source="media_items" db=0.7ms idle=242.6ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [58999] 13:16:42.496 [debug] QUERY OK source="settings" db=0.3ms idle=243.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:16:42.496 [debug] QUERY OK source="settings" db=0.3ms idle=243.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:16:42.498 [debug] QUERY OK source="settings" db=0.3ms queue=0.1ms idle=243.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:16:42.501 [info] Sent 200 in 8ms 13:16:42.557 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=Z2_oFD9DMd0 --simulate --skip-download --output /downloads/Switch Angel/Season %(upload_date>%Y)S/s%(upload_date>%Y)Se%(upload_date>%m%d)S00 - %(title)S.%(ext)S --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --print-to-file %(.{id,title,live_status,original_url,description,aspect_ratio,duration,upload_date,timestamp,playlist_index,filename})j /tmp/pinchflat/data/b5/f5/b5f5ecf68b1c5a587934cdfd62260575db2e94303274fe5810ac0c19bbff7fd4.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 1 with: ERROR: [youtube] Z2_oFD9DMd0: This live event will begin in a few moments. 13:16:42.558 [error] Error creating media item 'Z2_oFD9DMd0' from URL: {:error, "ERROR: [youtube] Z2_oFD9DMd0: This live event will begin in a few moments.\n", 1} 13:16:42.559 [debug] QUERY OK source="media_items" db=1.0ms idle=302.1ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [10] 13:16:42.562 [debug] QUERY OK source="tasks" db=0.7ms idle=64.8ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [202955, 10, ~U[2026-01-03 02:16:42Z], ~U[2026-01-03 02:16:42Z]] 13:16:42.563 [info] {"args":{"id":10},"id":202930,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":4985923,"event":"job:stop","queue_time":817017,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 13:16:42.593 [info] {"source":"oban","duration":2076,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:16:42.595 [info] {"args":{"id":35227},"id":202023,"meta":{},"system_time":1767406602595313826,"max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","event":"job:start","attempt":13,"tags":["media_item","media_fetching","show_in_dashboard"]} 13:16:42.596 [debug] QUERY OK source="media_items" db=0.3ms idle=32.9ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [35227] 13:16:42.596 [info] User scripts lifecyle file either not present or is empty. Skipping. 13:16:42.597 [debug] QUERY OK source="sources" db=0.7ms idle=27.1ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [11] 13:16:42.598 [debug] QUERY OK source="media_profiles" db=0.4ms idle=13.4ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:16:42.599 [debug] QUERY OK source="media_items" db=0.5ms idle=5.2ms SELECT 1 FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) LIMIT 1 [35227] 13:16:42.600 [debug] QUERY OK source="media_metadata" db=0.1ms idle=5.8ms SELECT m0."id", m0."metadata_filepath", m0."thumbnail_filepath", m0."media_item_id", m0."inserted_at", m0."updated_at", m0."media_item_id" FROM "media_metadata" AS m0 WHERE (m0."media_item_id" = ?) [35227] 13:16:42.601 [debug] QUERY OK source="media_profiles" db=0.2ms idle=4.4ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:16:42.601 [debug] QUERY OK source="settings" db=0.2ms idle=3.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:16:42.602 [debug] QUERY OK source="settings" db=0.2ms queue=0.1ms idle=3.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:16:42.603 [debug] Running yt-dlp command for action: get_downloadable_status 13:16:42.604 [debug] QUERY OK source="settings" db=0.1ms idle=4.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:16:42.604 [debug] QUERY OK source="settings" db=0.4ms idle=3.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:16:42.605 [debug] QUERY OK source="settings" db=0.3ms idle=3.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:16:42.605 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=T6fCV5QlQA4 --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/ce/e6/cee601b11bc4e1923a7eedf2e892e38c2b1d0c54638fea67008a4ea4b4f38f4f.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 13:16:42.716 [info] GET /sources/21/media/59069/edit 13:16:42.716 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "59069", "source_id" => "21"} Pipelines: [:browser] 13:16:42.719 [debug] QUERY OK source="media_items" db=1.5ms idle=115.3ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [59069] 13:16:42.720 [debug] QUERY OK source="settings" db=0.8ms idle=117.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:16:42.722 [debug] QUERY OK source="settings" db=0.9ms queue=0.2ms idle=117.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:16:42.724 [debug] QUERY OK source="settings" db=0.5ms queue=0.1ms idle=119.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:16:42.728 [info] Sent 200 in 11ms 13:16:47.544 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=T6fCV5QlQA4 --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/ce/e6/cee601b11bc4e1923a7eedf2e892e38c2b1d0c54638fea67008a4ea4b4f38f4f.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 1 with: ERROR: [youtube] T6fCV5QlQA4: Join this channel to get access to members-only content like this video, and other exclusive perks. 13:16:47.544 [error] yt-dlp download error for media item #35227: "ERROR: [youtube] T6fCV5QlQA4: Join this channel to get access to members-only content like this video, and other exclusive perks.\n" 13:16:47.546 [info] {"error":"** (Oban.PerformError) Pinchflat.Downloading.MediaDownloadWorker failed with {:error, :download_failed}","args":{"id":35227},"id":202023,"meta":{},"state":"failure","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":4949771,"event":"job:exception","queue_time":890820,"attempt":13,"tags":["media_item","media_fetching","show_in_dashboard"]} 13:17:00.141 [info] {"source":"oban","duration":338,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 13:17:02.648 [info] {"args":{"id":9},"id":202932,"meta":{},"system_time":1767406622648550289,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 13:17:02.649 [debug] QUERY OK source="sources" db=0.7ms idle=1835.9ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [9] 13:17:02.650 [debug] QUERY OK source="settings" db=0.5ms idle=1013.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:17:02.651 [debug] QUERY OK source="media_profiles" db=0.5ms idle=837.6ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:17:02.652 [debug] QUERY OK source="settings" db=0.4ms idle=11.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:17:02.652 [debug] Fetching recent media IDs from YouTube API for playlist: UUy0Pr5u-MwGXXzp_GDd4m_g 13:17:02.652 [debug] QUERY OK source="settings" db=0.3ms idle=3.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:17:02.652 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 13:17:03.096 [debug] QUERY OK source="media_items" db=6.1ms idle=440.4ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND m0."media_id" IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [9, "97DBlIPSMkI", "V7Q9VnfzRqE", "Nub2m3iioSw", "Tpk6NNZubqU", "L4Eh-MtBFFk", "sa8p75KJqOc", "2gpPC0vsry0", "B2l4YfAav6M", "iL1qKxcaZnU", "NH5AAcLn03o", "8fOaCUvVQpY", "8aQ7sJ9EyaY", "ld0ngHU3YQ0", "uKzsA5kc8jw", "_A1dxw_T6dw", "TFVA0Bc5ajA", "IgFSOa0RBxs", "fGAe2cenBhs", "a6_0p8e42Y4", "vnR7jnJYN-k", "db6_ragog48", "SMKDYoXrZzw", "-fM_uGwlRlU", "kRxJ2g3T0zs", "GgU7L-z0kbA", "yFZJ6Qb8mDY", "YkyTbtgcfJU", "k01ARI01oMU", "ToFKhGfGgc0", "MU8JlJIuwh4", "IY36QIh6VG8", "brtcZFHW0P4", "A39Glu9I9fk", "Ib_1jixUkLw", "c9UIDwF7oS4", "CcSE-YHRJP4", "Tpmb_mTKuhs", "yNbz6f5dMLE", "BAVQcOWZi-Y", "Fa7RxeYNUTw", "teIoBQdGT5s", "UqykI_3CT-g", "vBeWkDTK6Eg", "qOp_nyKqmic", "fEqSlPpXHYk", "lII4lxNpPVg", "BaxD8BI3wI4", "me_afppRbyI", "C69B2k3fAvs", ...] 13:17:03.106 [debug] QUERY OK source="media_items" db=7.3ms idle=448.2ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [9] 13:17:03.111 [debug] QUERY OK source="tasks" db=1.0ms idle=457.1ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [202956, 9, ~U[2026-01-03 02:17:03Z], ~U[2026-01-03 02:17:03Z]] 13:17:03.111 [info] {"args":{"id":9},"id":202932,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":462549,"event":"job:stop","queue_time":388144,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 13:17:12.596 [info] {"source":"oban","duration":1491,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:17:13.417 [info] GET /sources/13/media/55735/force_download 13:17:13.418 [debug] QUERY OK source="settings" db=0.2ms queue=0.1ms idle=822.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:17:13.420 [debug] QUERY OK source="settings" db=0.7ms queue=0.1ms idle=741.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:17:13.420 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 13:17:13.421 [error] #PID<0.9769.0> running PinchflatWeb.Endpoint (connection #PID<0.9768.0>, stream id 1) terminated Server: pinchflat.uiau7e.uncld.dev:80 (http) Request: GET /sources/13/media/55735/force_download ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/13/media/55735/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.9768.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/13/media/55735/force_download", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 38862}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "from" => "gptbot(at)openai.com", "host" => "pinchflat.uiau7e.uncld.dev", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.3; +https://openai.com/gptbot)", "via" => "2.0 Caddy", "x-forwarded-for" => "74.7.227.183", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https", "x-openai-host-hash" => "454925582" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.uiau7e.uncld.dev", method: "GET", owner: #PID<0.9769.0>, params: %{}, path_info: ["sources", "13", "media", "55735", "force_download"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.uiau7e.uncld.dev", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {10, 210, 0, 2}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"accept-encoding", "gzip, br, deflate"}, {"from", "gptbot(at)openai.com"}, {"host", "pinchflat.uiau7e.uncld.dev"}, {"user-agent", "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.3; +https://openai.com/gptbot)"}, {"via", "2.0 Caddy"}, {"x-forwarded-for", "74.7.227.183"}, {"x-forwarded-host", "pinchflat.uiau7e.uncld.dev"}, {"x-forwarded-proto", "https"}, {"x-openai-host-hash", "454925582"} ], request_path: "/sources/13/media/55735/force_download", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GIcW-A6JZVf3cY4AALaC"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.9768.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/13/media/55735/force_download", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 38862}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "from" => "gptbot(at)openai.com", "host" => "pinchflat.uiau7e.uncld.dev", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.3; +https://openai.com/gptbot)", "via" => "2.0 Caddy", "x-forwarded-for" => "74.7.227.183", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https", "x-openai-host-hash" => "454925582" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/13/media/55735/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.9768.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/13/media/55735/force_download", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 38862}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "from" => "gptbot(at)openai.com", "host" => "pinchflat.uiau7e.uncld.dev", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.3; +https://openai.com/gptbot)", "via" => "2.0 Caddy", "x-forwarded-for" => "74.7.227.183", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https", "x-openai-host-hash" => "454925582" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.uiau7e.uncld.dev", method: "GET", owner: #PID<0.9769.0>, params: %{}, path_info: ["sources", "13", "media", "55735", "force_download"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.uiau7e.uncld.dev", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {10, 210, 0, 2}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"accept-encoding" (truncated) 13:17:19.707 [info] {"args":{"id":11},"id":202933,"meta":{},"system_time":1767406639707288711,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 13:17:19.708 [debug] QUERY OK source="sources" db=0.4ms idle=894.6ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [11] 13:17:19.708 [debug] QUERY OK source="settings" db=0.4ms idle=895.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:17:19.709 [debug] QUERY OK source="media_profiles" db=0.6ms idle=895.6ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:17:19.710 [debug] QUERY OK source="settings" db=0.4ms idle=10.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:17:19.710 [debug] Fetching recent media IDs from YouTube API for playlist: UUJ901NqoRaXMnIm7aOjLyuA 13:17:19.710 [debug] QUERY OK source="settings" db=0.2ms idle=3.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:17:19.711 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 13:17:20.236 [debug] QUERY OK source="media_items" db=4.6ms idle=523.0ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND m0."media_id" IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [11, "1ji7g8qZJ_4", "xP5WmZg7OMg", "HBoV87Jndh8", "-zpzRklxMEo", "9AX85j6Lp4M", "p2U9d4FWDaI", "hfT6XVSa2xE", "qBOKYwe8NzA", "Cf5jL5JNq7k", "bAV0y2acB9c", "XE6JvrChQ_Q", "Efv456Ks9ms", "qgiJ4C5s46U", "KaVC_mTFqHk", "M6gat-hai0I", "_xwFJzOtQv0", "Ao-M_YvfhXY", "SKHWQwf0ago", "gmuFtWZG3v8", "H4oeJ87TMt4", "rS2fDo6mhS8", "aOF6Pe_bTeI", "x8B3Z91qkoE", "fVvYTWAHoBQ", "8r6xqWTqcPQ", "k677A--BwGE", "CSTtrz8t1eg", "w6Ej3Iim4Ic", "jO8S8_KX6p0", "tslsVdOjWFM", "dckL2BCDYmQ", "E3N8_pRRtGM", "qeOEDUgy5xA", "MIPvNqPwMxc", "V2GelRPp5fg", "jWH5H6Y6T-A", "1ObIAwtqt9k", "yVdv1xVggZ4", "Pxpz4211gMI", "UEUAHI0AZu4", "gitCR-iTofw", "eTg2rHYqUZc", "QnOIm4U7Dzs", "RYNFRbP4OWQ", "R3kNCz120XM", "vMflt2fJZYw", "4DkhBa_L_4E", "4IqFTPw6Mzk", "AepfCktyPLk", ...] 13:17:20.249 [debug] QUERY OK source="media_items" db=10.0ms idle=530.5ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [11] 13:17:20.256 [debug] QUERY OK source="tasks" db=0.7ms idle=19.6ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [202957, 11, ~U[2026-01-03 02:17:20Z], ~U[2026-01-03 02:17:20Z]] 13:17:20.257 [info] {"args":{"id":11},"id":202933,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":549309,"event":"job:stop","queue_time":410993,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 13:17:22.195 [info] GET /sources/21/media/58995/edit 13:17:22.196 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "58995", "source_id" => "21"} Pipelines: [:browser] 13:17:22.196 [info] GET /sources/21/media/59018/edit 13:17:22.196 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "59018", "source_id" => "21"} Pipelines: [:browser] 13:17:22.196 [info] GET /sources/21/media/41262/edit 13:17:22.196 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "41262", "source_id" => "21"} Pipelines: [:browser] 13:17:22.197 [debug] QUERY OK source="media_items" db=0.7ms idle=488.6ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [58995] 13:17:22.197 [debug] QUERY OK source="media_items" db=0.8ms idle=383.8ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [59018] 13:17:22.198 [debug] QUERY OK source="settings" db=0.5ms idle=384.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:17:22.198 [debug] QUERY OK source="settings" db=0.6ms idle=385.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:17:22.198 [debug] QUERY OK source="media_items" db=1.6ms idle=384.0ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [41262] 13:17:22.199 [debug] QUERY OK source="settings" db=0.6ms idle=1.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:17:22.199 [debug] QUERY OK source="settings" db=0.4ms idle=1.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:17:22.200 [debug] QUERY OK source="settings" db=0.9ms idle=0.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:17:22.200 [debug] QUERY OK source="settings" db=1.0ms idle=1.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:17:22.201 [debug] QUERY OK source="settings" db=0.8ms idle=1.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:17:22.201 [debug] QUERY OK source="settings" db=0.4ms idle=1.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:17:22.202 [info] Sent 200 in 6ms 13:17:22.202 [info] Sent 200 in 6ms 13:17:22.203 [debug] QUERY OK source="settings" db=0.6ms idle=2.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:17:22.204 [info] Sent 200 in 7ms 13:17:22.391 [info] GET /sources/21/media/59028 13:17:22.391 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "59028", "source_id" => "21"} Pipelines: [:browser] 13:17:22.392 [debug] QUERY OK source="media_items" db=0.4ms idle=191.2ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [59028] 13:17:22.393 [debug] QUERY OK source="tasks" db=0.5ms queue=0.1ms idle=192.1ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [59028] 13:17:22.393 [debug] QUERY OK source="sources" db=0.6ms idle=191.9ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [21] 13:17:22.394 [debug] QUERY OK source="settings" db=0.4ms idle=192.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:17:22.395 [debug] QUERY OK source="settings" db=0.5ms idle=191.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:17:22.396 [debug] QUERY OK source="settings" db=0.3ms queue=0.1ms idle=3.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:17:22.398 [debug] QUERY OK source="media_profiles" db=1.0ms idle=4.1ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:17:22.400 [info] Sent 200 in 9ms 13:17:23.070 [info] GET /sources/21/media/58989/edit 13:17:23.071 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "58989", "source_id" => "21"} Pipelines: [:browser] 13:17:23.072 [debug] QUERY OK source="media_items" db=0.8ms idle=676.7ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [58989] 13:17:23.073 [debug] QUERY OK source="settings" db=0.6ms idle=677.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:17:23.074 [debug] QUERY OK source="settings" db=0.3ms idle=677.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:17:23.075 [debug] QUERY OK source="settings" db=0.4ms idle=676.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:17:23.076 [info] Sent 200 in 6ms 13:17:23.282 [info] GET /sources/18/sync_files_on_disk 13:17:23.283 [debug] QUERY OK source="settings" db=0.5ms idle=572.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:17:23.284 [debug] QUERY OK source="settings" db=0.3ms idle=211.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:17:23.284 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 13:17:23.285 [error] #PID<0.9782.0> running PinchflatWeb.Endpoint (connection #PID<0.9774.0>, stream id 3) terminated Server: pinchflat.uiau7e.uncld.dev:80 (http) Request: GET /sources/18/sync_files_on_disk ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/18/sync_files_on_disk (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.9774.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/18/sync_files_on_disk", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 45630}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, zstd, deflate", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYU2RJbVNQSm9xNU14d1lhUWVvcjR2THVM.SQbdpnpQI8nqsItwglakfPgZ-C6WzDXW1XACPDiQ9EA", "host" => "pinchflat.uiau7e.uncld.dev", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)", "via" => "2.0 Caddy", "x-forwarded-for" => "216.73.216.126", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 3, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{ "_pinchflat_key" => "SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYU2RJbVNQSm9xNU14d1lhUWVvcjR2THVM.SQbdpnpQI8nqsItwglakfPgZ-C6WzDXW1XACPDiQ9EA" }, halted: false, host: "pinchflat.uiau7e.uncld.dev", method: "GET", owner: #PID<0.9782.0>, params: %{}, path_info: ["sources", "18", "sync_files_on_disk"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.uiau7e.uncld.dev", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {10, 210, 0, 2}, req_cookies: %{ "_pinchflat_key" => "SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYU2RJbVNQSm9xNU14d1lhUWVvcjR2THVM.SQbdpnpQI8nqsItwglakfPgZ-C6WzDXW1XACPDiQ9EA" }, req_headers: [ {"accept", "*/*"}, {"accept-encoding", "gzip, br, zstd, deflate"}, {"cookie", "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYU2RJbVNQSm9xNU14d1lhUWVvcjR2THVM.SQbdpnpQI8nqsItwglakfPgZ-C6WzDXW1XACPDiQ9EA"}, {"host", "pinchflat.uiau7e.uncld.dev"}, {"user-agent", "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)"}, {"via", "2.0 Caddy"}, {"x-forwarded-for", "216.73.216.126"}, {"x-forwarded-host", "pinchflat.uiau7e.uncld.dev"}, {"x-forwarded-proto", "https"} ], request_path: "/sources/18/sync_files_on_disk", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GIcW-lqE6I0yhEsAALdC"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.9774.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/18/sync_files_on_disk", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 45630}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, zstd, deflate", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYU2RJbVNQSm9xNU14d1lhUWVvcjR2THVM.SQbdpnpQI8nqsItwglakfPgZ-C6WzDXW1XACPDiQ9EA", "host" => "pinchflat.uiau7e.uncld.dev", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)", "via" => "2.0 Caddy", "x-forwarded-for" => "216.73.216.126", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 3, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/18/sync_files_on_disk (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.9774.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/18/sync_files_on_disk", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 45630}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, zstd, deflate", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYU2RJbVNQSm9xNU14d1lhUWVvcjR2THVM.SQbdpnpQI8nqsItwglakfPgZ-C6WzDXW1XACPDiQ9EA", "host" => "pinchflat.uiau7e.uncld.dev", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)", "via" => "2.0 Caddy", "x-forwarded-for" => "216.73.216.126", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 3, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{ "_pinchflat_key" => "SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYU2RJbVNQSm9xNU14d1lhUWVvcjR2THVM.SQbdpnpQI8nqsItwglakfPgZ-C6WzDXW1XACPDiQ9EA" }, halted: false, host: "pinchflat.uiau7e.uncld.dev", method: "GET", owner: #PID<0.9782.0>, params: %{}, path_info: ["sources", "18", "sync_files_on_disk"], path_params: %{}, por (truncated) 13:17:23.517 [info] GET /sources/21/media/58984 13:17:23.518 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "58984", "source_id" => "21"} Pipelines: [:browser] 13:17:23.519 [debug] QUERY OK source="media_items" db=1.1ms queue=0.1ms idle=445.0ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [58984] 13:17:23.522 [debug] QUERY OK source="tasks" db=1.7ms idle=446.3ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [58984] 13:17:23.522 [debug] QUERY OK source="sources" db=2.0ms idle=445.3ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [21] 13:17:23.524 [debug] QUERY OK source="oban_jobs" db=0.7ms idle=239.7ms SELECT o0."id", o0."state", o0."queue", o0."worker", o0."args", o0."meta", o0."tags", o0."errors", o0."attempt", o0."attempted_by", o0."max_attempts", o0."priority", o0."attempted_at", o0."cancelled_at", o0."completed_at", o0."discarded_at", o0."inserted_at", o0."scheduled_at", o0."id" FROM "oban_jobs" AS o0 WHERE (o0."id" = ?) [202135] 13:17:23.525 [debug] QUERY OK source="settings" db=0.6ms queue=0.1ms idle=240.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:17:23.526 [debug] QUERY OK source="settings" db=0.4ms queue=0.1ms idle=5.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:17:23.527 [debug] QUERY OK source="settings" db=0.5ms idle=4.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:17:23.528 [debug] QUERY OK source="media_profiles" db=0.4ms idle=5.4ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:17:23.547 [info] Sent 200 in 29ms 13:17:23.744 [info] GET /sources/16/sync_files_on_disk 13:17:23.745 [debug] QUERY OK source="settings" db=0.7ms queue=0.1ms idle=219.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:17:23.746 [debug] QUERY OK source="settings" db=0.5ms idle=220.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:17:23.747 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 13:17:23.748 [error] #PID<0.9787.0> running PinchflatWeb.Endpoint (connection #PID<0.9774.0>, stream id 5) terminated Server: pinchflat.uiau7e.uncld.dev:80 (http) Request: GET /sources/16/sync_files_on_disk ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/16/sync_files_on_disk (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.9774.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/16/sync_files_on_disk", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 45630}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, zstd, deflate", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYU2RJbVNQSm9xNU14d1lhUWVvcjR2THVM.SQbdpnpQI8nqsItwglakfPgZ-C6WzDXW1XACPDiQ9EA", "host" => "pinchflat.uiau7e.uncld.dev", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)", "via" => "2.0 Caddy", "x-forwarded-for" => "216.73.216.126", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 5, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{ "_pinchflat_key" => "SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYU2RJbVNQSm9xNU14d1lhUWVvcjR2THVM.SQbdpnpQI8nqsItwglakfPgZ-C6WzDXW1XACPDiQ9EA" }, halted: false, host: "pinchflat.uiau7e.uncld.dev", method: "GET", owner: #PID<0.9787.0>, params: %{}, path_info: ["sources", "16", "sync_files_on_disk"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.uiau7e.uncld.dev", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {10, 210, 0, 2}, req_cookies: %{ "_pinchflat_key" => "SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYU2RJbVNQSm9xNU14d1lhUWVvcjR2THVM.SQbdpnpQI8nqsItwglakfPgZ-C6WzDXW1XACPDiQ9EA" }, req_headers: [ {"accept", "*/*"}, {"accept-encoding", "gzip, br, zstd, deflate"}, {"cookie", "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYU2RJbVNQSm9xNU14d1lhUWVvcjR2THVM.SQbdpnpQI8nqsItwglakfPgZ-C6WzDXW1XACPDiQ9EA"}, {"host", "pinchflat.uiau7e.uncld.dev"}, {"user-agent", "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)"}, {"via", "2.0 Caddy"}, {"x-forwarded-for", "216.73.216.126"}, {"x-forwarded-host", "pinchflat.uiau7e.uncld.dev"}, {"x-forwarded-proto", "https"} ], request_path: "/sources/16/sync_files_on_disk", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GIcW-nYPfodSemUAALei"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.9774.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/16/sync_files_on_disk", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 45630}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, zstd, deflate", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYU2RJbVNQSm9xNU14d1lhUWVvcjR2THVM.SQbdpnpQI8nqsItwglakfPgZ-C6WzDXW1XACPDiQ9EA", "host" => "pinchflat.uiau7e.uncld.dev", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)", "via" => "2.0 Caddy", "x-forwarded-for" => "216.73.216.126", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 5, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/16/sync_files_on_disk (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.9774.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/16/sync_files_on_disk", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 45630}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, zstd, deflate", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYU2RJbVNQSm9xNU14d1lhUWVvcjR2THVM.SQbdpnpQI8nqsItwglakfPgZ-C6WzDXW1XACPDiQ9EA", "host" => "pinchflat.uiau7e.uncld.dev", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)", "via" => "2.0 Caddy", "x-forwarded-for" => "216.73.216.126", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 5, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{ "_pinchflat_key" => "SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYU2RJbVNQSm9xNU14d1lhUWVvcjR2THVM.SQbdpnpQI8nqsItwglakfPgZ-C6WzDXW1XACPDiQ9EA" }, halted: false, host: "pinchflat.uiau7e.uncld.dev", method: "GET", owner: #PID<0.9787.0>, params: %{}, path_info: ["sources", "16", "sync_files_on_disk"], path_params: %{}, por (truncated) 13:17:23.968 [info] GET /sources/21/media/59033 13:17:23.968 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "59033", "source_id" => "21"} Pipelines: [:browser] 13:17:23.970 [debug] QUERY OK source="media_items" db=0.8ms idle=441.8ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [59033] 13:17:23.971 [debug] QUERY OK source="tasks" db=0.6ms idle=256.9ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [59033] 13:17:23.971 [debug] QUERY OK source="sources" db=1.1ms idle=441.9ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [21] 13:17:23.972 [debug] QUERY OK source="settings" db=0.5ms idle=226.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:17:23.973 [debug] QUERY OK source="settings" db=0.3ms idle=226.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:17:23.974 [debug] QUERY OK source="settings" db=0.4ms idle=3.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:17:23.977 [debug] QUERY OK source="media_profiles" db=0.8ms idle=4.6ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:17:23.980 [info] Sent 200 in 12ms 13:17:24.192 [info] GET /sources/21/media/39269/edit 13:17:24.192 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "39269", "source_id" => "21"} Pipelines: [:browser] 13:17:24.194 [debug] QUERY OK source="media_items" db=1.0ms idle=220.9ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [39269] 13:17:24.195 [debug] QUERY OK source="settings" db=0.6ms idle=221.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:17:24.195 [debug] QUERY OK source="settings" db=0.4ms idle=221.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:17:24.197 [debug] QUERY OK source="settings" db=0.5ms idle=221.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:17:24.200 [info] Sent 200 in 7ms 13:17:24.420 [info] GET /sources/21/media/44786/edit 13:17:24.420 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "44786", "source_id" => "21"} Pipelines: [:browser] 13:17:24.422 [debug] QUERY OK source="media_items" db=0.9ms idle=444.0ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [44786] 13:17:24.423 [debug] QUERY OK source="settings" db=0.5ms idle=228.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:17:24.423 [debug] QUERY OK source="settings" db=0.4ms idle=228.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:17:24.424 [debug] QUERY OK source="settings" db=0.5ms idle=228.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:17:24.426 [info] Sent 200 in 5ms 13:17:24.644 [info] GET /sources/21/media/58979 13:17:24.644 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "58979", "source_id" => "21"} Pipelines: [:browser] 13:17:24.646 [debug] QUERY OK source="media_items" db=0.9ms idle=448.0ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [58979] 13:17:24.647 [debug] QUERY OK source="sources" db=0.8ms idle=223.5ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [21] 13:17:24.647 [debug] QUERY OK source="tasks" db=1.0ms idle=224.5ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [58979] 13:17:24.648 [debug] QUERY OK source="oban_jobs" db=0.3ms idle=224.4ms SELECT o0."id", o0."state", o0."queue", o0."worker", o0."args", o0."meta", o0."tags", o0."errors", o0."attempt", o0."attempted_by", o0."max_attempts", o0."priority", o0."attempted_at", o0."cancelled_at", o0."completed_at", o0."discarded_at", o0."inserted_at", o0."scheduled_at", o0."id" FROM "oban_jobs" AS o0 WHERE (o0."id" = ?) [202134] 13:17:24.649 [debug] QUERY OK source="settings" db=0.3ms idle=224.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:17:24.649 [debug] QUERY OK source="settings" db=0.4ms idle=3.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:17:24.650 [debug] QUERY OK source="settings" db=0.3ms idle=2.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:17:24.653 [debug] QUERY OK source="media_profiles" db=0.7ms queue=0.1ms idle=4.5ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:17:24.686 [info] Sent 200 in 42ms 13:17:42.600 [info] {"source":"oban","duration":3119,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:17:58.816 [info] {"args":{"id":15},"id":202934,"meta":{},"system_time":1767406678816315965,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 13:17:58.817 [debug] QUERY OK source="sources" db=0.3ms idle=1003.7ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [15] 13:17:58.818 [debug] QUERY OK source="settings" db=0.7ms idle=1004.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:17:58.819 [debug] QUERY OK source="media_profiles" db=0.4ms queue=0.1ms idle=1005.7ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:17:58.820 [debug] QUERY OK source="settings" db=0.3ms idle=10.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:17:58.820 [debug] Fetching recent media IDs from YouTube API for playlist: UU5qRAYQmCLx8hFGIiTWSQvA 13:17:58.820 [debug] QUERY OK source="settings" db=0.1ms idle=4.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:17:58.821 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 13:17:59.270 [debug] QUERY OK source="media_items" db=2.6ms idle=450.4ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND m0."media_id" IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [15, "EMmIdkwn6a4", "EBT3EIoJpDc", "P2j2jM33fbk", "KuYhCywx8JM", "EteM8YNAFu8", "-KN9sfrroJA", "35D6yzUQM8I", "pIqvmN8ePkc", "rR5RqL2cjPE", "B2mmx85ZIsE", "b-jTeTJ1ekk", "Qa4dYWqfgmg", "TZZgrQEsl4c", "hMFEigXIhgA", "yf8ozrYeFEk", "QoCmQRZKU_c", "Qa9rFTiItTE", "Kxw9tq49VBM", "aLj4QgEf7gQ", "-D7c5td5vhw", "UNJUpex0blc", "Afa2PJq3okY", "r9A1srY7LdU", "m6YZoOWrLlk", "RKSlnQcuZt4", "qEjkDPJmKIo", "fZirHVq8wp0", "jdB56zAMJgE", "F92Oe7JuDtI", "luEgOCX58gw", "9CkNfdQpsuo", "eC3Mv474A8c", "mq6lsIgLLqY", "Wqmn4OTW6Fw", "4yYMQFLVRNc", "TsdMEmH2Lsw", "HQeTYLxz6iY", "V-JtebgnFoM", "2cXS3i36Kh8", "wznCZtGitN8", "2tYVGxZMOiQ", "9bxljq6ljbE", "9hHVjpo_HDA", "w8bqGx4ZtYQ", "yFYGd9irJ5k", "WTfhL2-cT1U", "LCR3ZsqWhuo", "Tj09jojsiaM", "_GZvVqjqlM0", ...] 13:17:59.276 [debug] QUERY OK source="media_items" db=4.2ms idle=454.0ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [15] 13:17:59.281 [debug] QUERY OK source="tasks" db=1.1ms idle=459.6ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [202958, 15, ~U[2026-01-03 02:17:59Z], ~U[2026-01-03 02:17:59Z]] 13:17:59.282 [info] {"args":{"id":15},"id":202934,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":465462,"event":"job:stop","queue_time":379137,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 13:18:00.142 [info] {"source":"oban","duration":332,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 13:18:03.830 [info] {"args":{"id":18},"id":202935,"meta":{},"system_time":1767406683830230569,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 13:18:03.831 [debug] QUERY OK source="sources" db=0.4ms idle=1017.5ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [18] 13:18:03.832 [debug] QUERY OK source="settings" db=0.5ms idle=1018.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:18:03.833 [debug] QUERY OK source="media_profiles" db=0.8ms idle=1011.9ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:18:03.834 [debug] QUERY OK source="settings" db=0.6ms idle=10.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:18:03.834 [debug] Fetching recent media IDs from YouTube API for playlist: UUuisDAMnvHMYuLFRedMgmVw 13:18:03.835 [debug] QUERY OK source="settings" db=0.6ms idle=4.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:18:03.835 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 13:18:04.276 [debug] QUERY OK source="media_items" db=4.4ms idle=440.3ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND m0."media_id" IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [18, "mf2Em7F_qDM", "PjvBtlIGGQU", "EF_PO-pALOQ", "j9eh7huEF4A", "y3FGuwfGzL0", "ZWH_eu9wdUE", "UccWWifa8jA", "0L8xWydKOhk", "CkSloYV3ay4", "SkQ7ywGW2HY", "QM3qu001Xdk", "jOTurZWIEmw", "pojDco-WhA4", "GD19Y1VYBKY", "cvViWSBLu-U", "wXm5ocXv9ho", "uB1Tk9eXQbk", "I7vb-PGArW4", "0h9qvAA5dfQ", "7yx-SecBATo", "oj1ySj7TVJk", "dtTdjRB4Q4g", "mpfcVNb8Mhs", "D3MFnCKv2Mc", "458_RTLWN2E", "W26HiyQ5k1s", "w4NDxPYJs1I", "cxuEV05UN7U", "5cPjR5FVDOw", "nJhbZNSrP4c", "X9Eu7mui35E", "wrgZHIpa6F0", "JEN7jfNqy1A", "v31DYiS2LbY", "iJfD5wWLvuM", "qPVTMbiyPLE", "rM_nvsztYlw", "IoD1j3ZG-SQ", "DDnqxbWvIgQ", "HIhF6C1yc7M", "DlNIxjiqQvs", "JO0-kOXXMEw", "2DihqSsed3w", "uDlvlF5iKz8", "v2jg_5WZ41o", "JekH9K8_SS8", "xVV_6qW_Ho8", "qYOABpvD49s", "VAw8zvyLmfE", ...] 13:18:04.284 [debug] QUERY OK source="media_items" db=6.6ms idle=445.5ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [18] 13:18:04.288 [debug] QUERY OK source="tasks" db=0.7ms idle=452.5ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [202959, 18, ~U[2026-01-03 02:18:04Z], ~U[2026-01-03 02:18:04Z]] 13:18:04.289 [info] {"args":{"id":18},"id":202935,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":458245,"event":"job:stop","queue_time":465989,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 13:18:12.603 [info] {"source":"oban","duration":2498,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:18:12.857 [info] {"args":{"id":58546},"id":201954,"meta":{},"system_time":1767406692857271906,"max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","event":"job:start","attempt":9,"tags":["media_item","media_fetching","show_in_dashboard"]} 13:18:12.858 [debug] QUERY OK source="media_items" db=0.3ms queue=0.1ms idle=1044.9ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [58546] 13:18:12.859 [info] User scripts lifecyle file either not present or is empty. Skipping. 13:18:12.860 [debug] QUERY OK source="sources" db=0.4ms idle=1012.6ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [5] 13:18:12.861 [debug] QUERY OK source="media_profiles" db=0.3ms queue=0.1ms idle=257.3ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:18:12.862 [debug] QUERY OK source="media_items" db=0.4ms idle=11.0ms SELECT 1 FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) LIMIT 1 [58546] 13:18:12.865 [debug] QUERY OK source="media_metadata" db=0.3ms idle=7.6ms SELECT m0."id", m0."metadata_filepath", m0."thumbnail_filepath", m0."media_item_id", m0."inserted_at", m0."updated_at", m0."media_item_id" FROM "media_metadata" AS m0 WHERE (m0."media_item_id" = ?) [58546] 13:18:12.865 [debug] QUERY OK source="media_profiles" db=0.5ms idle=6.7ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:18:12.867 [debug] QUERY OK source="settings" db=0.4ms idle=6.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:18:12.867 [debug] QUERY OK source="settings" db=0.3ms idle=6.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:18:12.868 [debug] Running yt-dlp command for action: get_downloadable_status 13:18:12.869 [debug] QUERY OK source="settings" db=0.3ms idle=7.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:18:12.870 [debug] QUERY OK source="settings" db=0.3ms idle=4.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:18:12.870 [debug] QUERY OK source="settings" db=0.2ms idle=4.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:18:12.870 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=CcUb7Ky2oSI --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/d4/6b/d46b587e1038607da13df33b731da1d620c9e99b404be2281499a7ee6b395a21.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 13:18:14.605 [info] GET /sources/16/media/10072 13:18:14.605 [info] GET /sources/3 13:18:14.605 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "10072", "source_id" => "16"} Pipelines: [:browser] 13:18:14.606 [debug] Processing with PinchflatWeb.Sources.SourceController.show/2 Parameters: %{"delete_files" => "true", "id" => "3"} Pipelines: [:browser] 13:18:14.607 [debug] QUERY OK source="media_items" db=0.9ms queue=0.1ms idle=1738.7ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [10072] 13:18:14.607 [debug] QUERY OK source="sources" db=1.2ms idle=1737.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [3] 13:18:14.609 [debug] QUERY OK source="media_profiles" db=0.7ms queue=0.2ms idle=1738.0ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:18:14.609 [info] GET /sources/3/media/58997/edit 13:18:14.609 [debug] QUERY OK source="tasks" db=0.7ms queue=0.1ms idle=1737.7ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [10072] 13:18:14.609 [debug] QUERY OK source="sources" db=0.8ms idle=752.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [16] 13:18:14.609 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "58997", "source_id" => "3"} Pipelines: [:browser] 13:18:14.610 [debug] QUERY OK source="media_items" db=0.2ms idle=1.9ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [58997] 13:18:14.610 [debug] QUERY OK source="tasks" db=0.9ms queue=0.1ms idle=2.0ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at" FROM "tasks" AS t0 INNER JOIN "oban_jobs" AS o1 ON o1."id" = t0."job_id" WHERE (t0."source_id" = ?) AND (o1."state" IN (?,?,?,?)) [3, "executing", "available", "scheduled", "retryable"] 13:18:14.610 [debug] QUERY OK source="settings" db=0.7ms idle=1.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:18:14.611 [debug] QUERY OK source="settings" db=0.3ms idle=1.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:18:14.611 [debug] QUERY OK source="settings" db=0.4ms idle=0.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:18:14.612 [debug] QUERY OK source="settings" db=0.8ms idle=0.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:18:14.612 [debug] QUERY OK source="oban_jobs" db=1.4ms idle=1.5ms SELECT o0."id", o0."state", o0."queue", o0."worker", o0."args", o0."meta", o0."tags", o0."errors", o0."attempt", o0."attempted_by", o0."max_attempts", o0."priority", o0."attempted_at", o0."cancelled_at", o0."completed_at", o0."discarded_at", o0."inserted_at", o0."scheduled_at", o0."id" FROM "oban_jobs" AS o0 WHERE (o0."id" IN (?,?)) [202950, 202160] 13:18:14.612 [debug] QUERY OK source="settings" db=0.2ms idle=1.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:18:14.613 [debug] QUERY OK source="settings" db=0.3ms queue=0.2ms idle=1.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:18:14.613 [debug] QUERY OK source="settings" db=0.4ms idle=1.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:18:14.614 [debug] QUERY OK source="settings" db=0.9ms idle=1.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:18:14.615 [debug] QUERY OK source="media_profiles" db=1.5ms idle=1.1ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:18:14.616 [debug] QUERY OK source="settings" db=0.5ms queue=0.4ms idle=2.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:18:14.616 [info] Sent 200 in 6ms 13:18:14.616 [info] Sent 200 in 11ms 13:18:14.617 [debug] QUERY OK source="sources" db=0.3ms idle=3.9ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [3] 13:18:14.624 [debug] QUERY OK source="media_items" db=6.6ms idle=4.3ms SELECT count(m0."id") FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [3] 13:18:14.632 [debug] QUERY OK source="media_items" db=7.0ms idle=10.4ms SELECT m0."id", m0."title", m0."uploaded_at", m0."prevent_download", m0."last_error" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) ORDER BY m0."uploaded_at" DESC LIMIT ? OFFSET ? [3, 10, 0] 13:18:14.633 [debug] QUERY OK source="sources" db=0.7ms idle=17.6ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [3] 13:18:14.634 [debug] QUERY OK source="media_items" db=1.0ms queue=0.1ms idle=17.8ms SELECT count(m0."id") FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND NOT (m0."media_filepath" IS NULL)) [3] 13:18:14.640 [debug] QUERY OK source="media_items" db=5.2ms idle=17.6ms SELECT m0."id", m0."title", m0."uploaded_at", m0."prevent_download", m0."last_error" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND NOT (m0."media_filepath" IS NULL)) ORDER BY m0."uploaded_at" DESC LIMIT ? OFFSET ? [3, 10, 0] 13:18:14.642 [debug] QUERY OK source="sources" db=0.5ms idle=17.3ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [3] 13:18:14.645 [debug] QUERY OK source="media_items" db=2.6ms idle=11.1ms SELECT count(m0."id") FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds"))))) [3] 13:18:14.653 [debug] QUERY OK source="media_items" db=7.4ms idle=12.5ms SELECT m0."id", m0."title", m0."uploaded_at", m0."prevent_download", m0."last_error" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds"))))) ORDER BY m0."uploaded_at" DESC LIMIT ? OFFSET ? [3, 10, 0] 13:18:14.656 [info] Sent 200 in 50ms 13:18:14.762 [info] GET /sources/3/media/59002/edit 13:18:14.762 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "59002", "source_id" => "3"} Pipelines: [:browser] 13:18:14.763 [debug] QUERY OK source="media_items" db=0.7ms queue=0.1ms idle=127.9ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [59002] 13:18:14.765 [debug] QUERY OK source="settings" db=0.4ms queue=0.1ms idle=123.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:18:14.765 [debug] QUERY OK source="settings" db=0.4ms idle=122.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:18:14.767 [debug] QUERY OK source="settings" db=0.3ms idle=120.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:18:14.770 [info] Sent 200 in 8ms 13:18:14.866 [info] {"args":{"id":16},"id":202936,"meta":{},"system_time":1767406694866166413,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 13:18:14.867 [debug] QUERY OK source="sources" db=0.5ms idle=101.5ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [16] 13:18:14.867 [debug] QUERY OK source="settings" db=0.5ms idle=101.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:18:14.868 [debug] QUERY OK source="media_profiles" db=0.5ms idle=100.8ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:18:14.869 [debug] QUERY OK source="settings" db=0.3ms idle=9.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:18:14.869 [debug] Fetching recent media IDs from YouTube API for playlist: UUPPfK7Nq_yQR84rn1wcTXBg 13:18:14.869 [debug] QUERY OK source="settings" db=0.1ms idle=3.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:18:14.869 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 13:18:15.205 [debug] QUERY OK source="media_items" db=2.2ms idle=336.0ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND m0."media_id" IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [16, "BiTNUZ2zONY", "7pVLE7ggkcc", "YAh-xEteBz4", "6hNpMT5OwGo", "vx3oGZYqxm4", "7W_ZSNuS-4w", "CxUC2HXvO84", "RxapAZRYJ6I", "f2ainZL8Tzk", "KJtASaKc95g", "yBCh5cyI0Po", "dg_HQL3GBcY", "ZiVvXPpo0eE", "YO1TnWptv3o", "HwnBnsQBeOA", "CCE2v3oIa74", "OWVPYr9e76Y", "VApJtIyMEec", "XtOIQYVq26o", "gZL1KzV54Cw", "kmU-Eazta1s", "XXthHXEpEP8", "dPw_HkMgYI0", "rxq-TvgNCBU", "SaCbUtTuLhA", "TWLqSk4ZlN0", "p7_rduK5WA0", "lNZ56C-f4a8", "GlK3f1cs_l4", "Yabwyb14-BQ", "WupRwvJ7sOc", "MhpoNL1gZbw", "yUfm6AbtJ0g", "y8zfgIgZ4c0", "gOwjmKMmkV4", "aTiunvocl5c", "KebjX3KEgWQ", "0T2MYXljL5o", "i7sbS92R4cg", "66CDGzjLBtY", "T_W0FWiJmM8", "u_80rUKItGc", "C9_wibbg1Ug", "A4mg1ZUb-7s", "YmUfZt4Ku9s", "DoWsgrlIjYU", "gc5ojxTuwOg", "3AMdPMoGJus", "htYY8VwN-9g", ...] 13:18:15.213 [debug] QUERY OK source="media_items" db=3.7ms queue=0.1ms idle=342.0ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [16] 13:18:15.217 [debug] QUERY OK source="tasks" db=0.5ms idle=347.4ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [202960, 16, ~U[2026-01-03 02:18:15Z], ~U[2026-01-03 02:18:15Z]] 13:18:15.218 [info] {"args":{"id":16},"id":202936,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":351540,"event":"job:stop","queue_time":462729,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 13:18:15.444 [info] GET /sources/3/media/58982/edit 13:18:15.444 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "58982", "source_id" => "3"} Pipelines: [:browser] 13:18:15.446 [debug] QUERY OK source="media_items" db=1.0ms idle=228.8ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [58982] 13:18:15.447 [debug] QUERY OK source="settings" db=0.6ms idle=229.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:18:15.448 [debug] QUERY OK source="settings" db=0.6ms idle=230.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:18:15.449 [debug] QUERY OK source="settings" db=0.5ms idle=230.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:18:15.450 [info] Sent 200 in 6ms 13:18:15.677 [info] GET /sources/3/media/58874/edit 13:18:15.678 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "58874", "source_id" => "3"} Pipelines: [:browser] 13:18:15.679 [debug] QUERY OK source="media_items" db=0.9ms idle=451.2ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [58874] 13:18:15.680 [debug] QUERY OK source="settings" db=0.8ms idle=234.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:18:15.682 [debug] QUERY OK source="settings" db=0.7ms queue=0.2ms idle=234.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:18:15.684 [debug] QUERY OK source="settings" db=0.4ms queue=0.2ms idle=235.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:18:15.687 [info] Sent 200 in 9ms 13:18:15.896 [info] GET /sources/3/media/57629 13:18:15.896 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "57629", "source_id" => "3"} Pipelines: [:browser] 13:18:15.897 [debug] QUERY OK source="media_items" db=0.4ms idle=217.4ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [57629] 13:18:15.898 [debug] QUERY OK source="tasks" db=0.6ms idle=217.0ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [57629] 13:18:15.899 [debug] QUERY OK source="sources" db=1.0ms idle=215.8ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [3] 13:18:15.900 [debug] QUERY OK source="oban_jobs" db=0.5ms idle=215.3ms SELECT o0."id", o0."state", o0."queue", o0."worker", o0."args", o0."meta", o0."tags", o0."errors", o0."attempt", o0."attempted_by", o0."max_attempts", o0."priority", o0."attempted_at", o0."cancelled_at", o0."completed_at", o0."discarded_at", o0."inserted_at", o0."scheduled_at", o0."id" FROM "oban_jobs" AS o0 WHERE (o0."id" = ?) [202914] 13:18:15.901 [debug] QUERY OK source="settings" db=0.5ms queue=0.1ms idle=38.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:18:15.902 [debug] QUERY OK source="settings" db=0.5ms queue=0.1ms idle=4.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:18:15.903 [debug] QUERY OK source="settings" db=0.2ms idle=4.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:18:15.906 [debug] QUERY OK source="media_profiles" db=0.4ms idle=6.5ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:18:15.930 [info] Sent 200 in 33ms 13:18:16.118 [info] GET /sources/18/media/59092 13:18:16.118 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "59092", "source_id" => "18"} Pipelines: [:browser] 13:18:16.119 [debug] QUERY OK source="media_items" db=0.2ms idle=218.7ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [59092] 13:18:16.120 [debug] QUERY OK source="tasks" db=0.4ms idle=218.1ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [59092] 13:18:16.120 [debug] QUERY OK source="sources" db=0.8ms idle=217.2ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [18] 13:18:16.121 [debug] QUERY OK source="settings" db=0.4ms idle=217.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:18:16.122 [debug] QUERY OK source="settings" db=0.3ms idle=215.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:18:16.123 [debug] QUERY OK source="settings" db=0.3ms idle=3.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:18:16.124 [debug] QUERY OK source="media_profiles" db=0.5ms idle=3.6ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:18:16.126 [info] Sent 200 in 7ms 13:18:16.307 [info] GET /sources/3/media/58880/edit 13:18:16.307 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "58880", "source_id" => "3"} Pipelines: [:browser] 13:18:16.308 [debug] QUERY OK source="media_items" db=0.3ms idle=187.6ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [58880] 13:18:16.309 [debug] QUERY OK source="settings" db=0.3ms idle=187.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:18:16.310 [debug] QUERY OK source="settings" db=0.2ms queue=0.1ms idle=188.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:18:16.312 [debug] QUERY OK source="settings" db=0.2ms queue=0.1ms idle=188.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:18:16.315 [info] Sent 200 in 7ms 13:18:16.484 [info] GET /sources/3/media/58869/edit 13:18:16.485 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "58869", "source_id" => "3"} Pipelines: [:browser] 13:18:16.486 [debug] QUERY OK source="media_items" db=0.9ms idle=361.3ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [58869] 13:18:16.488 [debug] QUERY OK source="settings" db=0.4ms queue=0.1ms idle=179.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:18:16.489 [debug] QUERY OK source="settings" db=0.2ms idle=178.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:18:16.490 [debug] QUERY OK source="settings" db=0.2ms idle=179.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:18:16.492 [info] Sent 200 in 7ms 13:18:16.659 [info] GET /sources/3/media/59017/edit 13:18:16.660 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "59017", "source_id" => "3"} Pipelines: [:browser] 13:18:16.662 [debug] QUERY OK source="media_items" db=1.1ms queue=0.1ms idle=348.8ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [59017] 13:18:16.664 [debug] QUERY OK source="settings" db=0.6ms queue=0.1ms idle=176.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:18:16.665 [debug] QUERY OK source="settings" db=0.5ms idle=175.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:18:16.666 [debug] QUERY OK source="settings" db=0.3ms idle=176.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:18:16.667 [info] Sent 200 in 8ms 13:18:18.486 [info] GET /sources/14/media/32651 13:18:18.486 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "32651", "source_id" => "14"} Pipelines: [:browser] 13:18:18.488 [debug] QUERY OK source="media_items" db=1.0ms idle=674.2ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [32651] 13:18:18.490 [debug] QUERY OK source="tasks" db=0.9ms queue=0.1ms idle=676.4ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [32651] 13:18:18.490 [debug] QUERY OK source="sources" db=1.0ms idle=676.6ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [14] 13:18:18.492 [debug] QUERY OK source="settings" db=0.6ms queue=0.1ms idle=678.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:18:18.493 [debug] QUERY OK source="settings" db=0.5ms queue=0.1ms idle=626.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:18:18.494 [debug] QUERY OK source="settings" db=0.4ms idle=6.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:18:18.496 [debug] QUERY OK source="media_profiles" db=0.6ms idle=5.4ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:18:18.498 [info] Sent 200 in 11ms 13:18:19.553 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=CcUb7Ky2oSI --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/d4/6b/d46b587e1038607da13df33b731da1d620c9e99b404be2281499a7ee6b395a21.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 13:18:19.554 [debug] Running yt-dlp command for action: download 13:18:19.554 [debug] QUERY OK source="settings" db=0.5ms idle=1061.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:18:19.555 [debug] QUERY OK source="settings" db=0.5ms idle=1061.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:18:19.556 [debug] QUERY OK source="settings" db=0.5ms queue=0.1ms idle=1061.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:18:19.557 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=CcUb7Ky2oSI --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --embed-subs --sub-langs en --write-thumbnail --convert-thumbnail jpg --output thumbnail:/downloads/CodeSync/Season %(upload_date>%Y)S/s%(upload_date>%Y)Se%(upload_date>%m%d)S99 - %(title)S-thumb.%(ext)S --embed-thumbnail --convert-thumbnail jpg --write-info-json --clean-info-json --embed-metadata --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --sponsorblock-mark sponsor,intro,outro,selfpromo,preview,filler,interaction,music_offtopic --output /downloads/CodeSync/Season %(upload_date>%Y)S/s%(upload_date>%Y)Se%(upload_date>%m%d)S99 - %(title)S.%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/3a/d6/3ad63e5f8dcd6c3c17df10fc8f8df71e0cf7f135e102bca7dbc7c381c074ecea.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 13:18:28.458 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=CcUb7Ky2oSI --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --embed-subs --sub-langs en --write-thumbnail --convert-thumbnail jpg --output thumbnail:/downloads/CodeSync/Season %(upload_date>%Y)S/s%(upload_date>%Y)Se%(upload_date>%m%d)S99 - %(title)S-thumb.%(ext)S --embed-thumbnail --convert-thumbnail jpg --write-info-json --clean-info-json --embed-metadata --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --sponsorblock-mark sponsor,intro,outro,selfpromo,preview,filler,interaction,music_offtopic --output /downloads/CodeSync/Season %(upload_date>%Y)S/s%(upload_date>%Y)Se%(upload_date>%m%d)S99 - %(title)S.%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/3a/d6/3ad63e5f8dcd6c3c17df10fc8f8df71e0cf7f135e102bca7dbc7c381c074ecea.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 1 with: WARNING: The extractor specified to use impersonation for this download, but no impersonate target is available. If you encounter errors, then see https://github.com/yt-dlp/yt-dlp#impersonation for information on installing the required dependencies ERROR: Unable to download video subtitles for 'en': HTTP Error 429: Too Many Requests 13:18:28.458 [error] yt-dlp download error for media item #58546: "WARNING: The extractor specified to use impersonation for this download, but no impersonate target is available. If you encounter errors, then see https://github.com/yt-dlp/yt-dlp#impersonation for information on installing the required dependencies\nERROR: Unable to download video subtitles for 'en': HTTP Error 429: Too Many Requests\n" 13:18:28.460 [info] {"error":"** (Oban.PerformError) Pinchflat.Downloading.MediaDownloadWorker failed with {:error, :download_failed}","args":{"id":58546},"id":201954,"meta":{},"state":"failure","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":15601619,"event":"job:exception","queue_time":231986,"attempt":9,"tags":["media_item","media_fetching","show_in_dashboard"]} 13:18:42.606 [info] {"source":"oban","duration":2045,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:18:55.477 [info] GET /sources/3/media/40436/edit 13:18:55.477 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "40436", "source_id" => "3"} Pipelines: [:browser] 13:18:55.478 [info] GET /sources/3/media/58997 13:18:55.479 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "58997", "source_id" => "3"} Pipelines: [:browser] 13:18:55.479 [debug] QUERY OK source="media_items" db=1.3ms queue=0.1ms idle=1664.7ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [40436] 13:18:55.479 [info] GET /sources/3/media/59020 13:18:55.479 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "59020", "source_id" => "3"} Pipelines: [:browser] 13:18:55.480 [debug] QUERY OK source="media_items" db=0.6ms queue=0.1ms idle=1666.6ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [58997] 13:18:55.480 [debug] QUERY OK source="settings" db=0.5ms idle=1666.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:18:55.481 [debug] QUERY OK source="media_items" db=0.8ms idle=1510.1ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [59020] 13:18:55.481 [info] GET /sources/16/media/10092 13:18:55.482 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "10092", "source_id" => "16"} Pipelines: [:browser] 13:18:55.482 [debug] QUERY OK source="settings" db=1.3ms idle=506.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:18:55.482 [debug] QUERY OK source="tasks" db=1.1ms queue=0.1ms idle=1.0ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [59020] 13:18:55.482 [info] GET /sources/3/media/46044/edit 13:18:55.482 [debug] QUERY OK source="tasks" db=1.9ms idle=1.7ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [58997] 13:18:55.483 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "46044", "source_id" => "3"} Pipelines: [:browser] 13:18:55.484 [debug] QUERY OK source="sources" db=3.9ms idle=0.5ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [3] 13:18:55.485 [debug] QUERY OK source="sources" db=3.6ms idle=0.7ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [3] 13:18:55.485 [debug] QUERY OK source="settings" db=2.4ms queue=0.2ms idle=0.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:18:55.485 [debug] QUERY OK source="media_items" db=2.6ms idle=0.2ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [10092] 13:18:55.485 [debug] QUERY OK source="media_items" db=2.3ms idle=0.5ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [46044] 13:18:55.486 [debug] QUERY OK source="tasks" db=0.5ms queue=0.1ms idle=1.0ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [10092] 13:18:55.487 [debug] QUERY OK source="oban_jobs" db=1.4ms queue=0.2ms idle=0.7ms SELECT o0."id", o0."state", o0."queue", o0."worker", o0."args", o0."meta", o0."tags", o0."errors", o0."attempt", o0."attempted_by", o0."max_attempts", o0."priority", o0."attempted_at", o0."cancelled_at", o0."completed_at", o0."discarded_at", o0."inserted_at", o0."scheduled_at", o0."id" FROM "oban_jobs" AS o0 WHERE (o0."id" = ?) [202138] 13:18:55.487 [debug] QUERY OK source="sources" db=1.4ms idle=0.9ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [16] 13:18:55.488 [debug] QUERY OK source="settings" db=1.5ms idle=0.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:18:55.488 [info] Sent 200 in 11ms 13:18:55.488 [debug] QUERY OK source="settings" db=1.7ms idle=0.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:18:55.488 [debug] QUERY OK source="settings" db=0.7ms queue=0.3ms idle=0.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:18:55.489 [debug] QUERY OK source="settings" db=0.7ms idle=0.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:18:55.489 [debug] QUERY OK source="settings" db=1.0ms queue=0.1ms idle=0.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:18:55.489 [debug] QUERY OK source="settings" db=0.6ms idle=0.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:18:55.489 [debug] QUERY OK source="settings" db=1.1ms idle=0.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:18:55.490 [debug] QUERY OK source="settings" db=0.2ms idle=0.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:18:55.490 [debug] QUERY OK source="settings" db=0.9ms idle=0.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:18:55.490 [debug] QUERY OK source="settings" db=0.3ms queue=0.1ms idle=0.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:18:55.491 [debug] QUERY OK source="settings" db=0.7ms queue=0.2ms idle=0.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:18:55.491 [debug] QUERY OK source="settings" db=0.1ms idle=1.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:18:55.491 [debug] QUERY OK source="media_profiles" db=0.2ms queue=0.1ms idle=1.1ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:18:55.492 [debug] QUERY OK source="media_profiles" db=0.6ms idle=1.7ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:18:55.493 [debug] QUERY OK source="media_profiles" db=0.9ms idle=1.5ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:18:55.494 [info] Sent 200 in 11ms 13:18:55.494 [info] Sent 200 in 12ms 13:18:55.500 [info] Sent 200 in 20ms 13:18:55.510 [info] Sent 200 in 31ms 13:18:56.103 [info] GET /sources/16/media/39280/edit 13:18:56.103 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "39280", "source_id" => "16"} Pipelines: [:browser] 13:18:56.105 [debug] QUERY OK source="media_items" db=0.9ms queue=0.1ms idle=612.9ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [39280] 13:18:56.107 [debug] QUERY OK source="settings" db=0.6ms queue=0.1ms idle=614.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:18:56.108 [debug] QUERY OK source="settings" db=0.4ms idle=614.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:18:56.108 [debug] QUERY OK source="settings" db=0.2ms idle=615.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:18:56.110 [info] Sent 200 in 7ms 13:18:56.304 [info] GET /sources/3/media/36046/edit 13:18:56.305 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "36046", "source_id" => "3"} Pipelines: [:browser] 13:18:56.307 [debug] QUERY OK source="media_items" db=0.5ms idle=329.9ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [36046] 13:18:56.308 [debug] QUERY OK source="settings" db=0.3ms queue=0.1ms idle=202.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:18:56.309 [debug] QUERY OK source="settings" db=0.2ms idle=201.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:18:56.311 [debug] QUERY OK source="settings" db=0.4ms idle=202.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:18:56.314 [info] Sent 200 in 9ms 13:18:56.648 [info] GET /sources/3/media/59002 13:18:56.649 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "59002", "source_id" => "3"} Pipelines: [:browser] 13:18:56.650 [debug] QUERY OK source="media_items" db=1.0ms queue=0.1ms idle=540.7ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [59002] 13:18:56.652 [debug] QUERY OK source="tasks" db=1.0ms idle=344.6ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [59002] 13:18:56.653 [debug] QUERY OK source="sources" db=1.3ms idle=342.9ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [3] 13:18:56.654 [debug] QUERY OK source="settings" db=0.3ms idle=344.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:18:56.655 [debug] QUERY OK source="settings" db=0.2ms queue=0.1ms idle=343.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:18:56.656 [debug] QUERY OK source="settings" db=0.3ms idle=5.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:18:56.658 [debug] QUERY OK source="media_profiles" db=0.3ms idle=4.8ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:18:56.661 [info] Sent 200 in 12ms 13:18:56.827 [info] GET /sources/3/media/58982 13:18:56.827 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "58982", "source_id" => "3"} Pipelines: [:browser] 13:18:56.829 [debug] QUERY OK source="media_items" db=0.7ms queue=0.2ms idle=175.4ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [58982] 13:18:56.831 [debug] QUERY OK source="tasks" db=0.4ms queue=0.1ms idle=176.6ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [58982] 13:18:56.832 [debug] QUERY OK source="sources" db=0.8ms idle=176.1ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [3] 13:18:56.833 [debug] QUERY OK source="settings" db=0.2ms queue=0.1ms idle=176.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:18:56.834 [debug] QUERY OK source="settings" db=0.4ms queue=0.1ms idle=175.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:18:56.836 [debug] QUERY OK source="settings" db=0.3ms queue=0.1ms idle=6.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:18:56.837 [debug] QUERY OK source="media_profiles" db=0.2ms idle=6.0ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:18:56.841 [info] Sent 200 in 14ms 13:18:57.027 [info] GET /sources/3/media/58880 13:18:57.027 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "58880", "source_id" => "3"} Pipelines: [:browser] 13:18:57.028 [debug] QUERY OK source="media_items" db=0.4ms idle=194.6ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [58880] 13:18:57.029 [debug] QUERY OK source="tasks" db=0.2ms queue=0.1ms idle=194.9ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [58880] 13:18:57.029 [debug] QUERY OK source="sources" db=0.3ms idle=193.3ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [3] 13:18:57.030 [debug] QUERY OK source="settings" db=0.2ms idle=192.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:18:57.031 [debug] QUERY OK source="settings" db=0.2ms idle=52.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:18:57.032 [debug] QUERY OK source="settings" db=0.3ms idle=3.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:18:57.034 [debug] QUERY OK source="media_profiles" db=0.5ms idle=4.2ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:18:57.038 [info] Sent 200 in 10ms 13:18:57.197 [info] GET /sources/3/media/58869 13:18:57.197 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "58869", "source_id" => "3"} Pipelines: [:browser] 13:18:57.199 [debug] QUERY OK source="media_items" db=1.0ms queue=0.1ms idle=168.6ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [58869] 13:18:57.202 [debug] QUERY OK source="tasks" db=1.0ms queue=0.1ms idle=170.2ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [58869] 13:18:57.202 [debug] QUERY OK source="sources" db=1.1ms idle=169.9ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [3] 13:18:57.203 [debug] QUERY OK source="settings" db=0.3ms idle=170.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:18:57.204 [debug] QUERY OK source="settings" db=0.2ms idle=169.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:18:57.205 [debug] QUERY OK source="settings" db=0.2ms idle=5.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:18:57.207 [debug] QUERY OK source="media_profiles" db=0.3ms queue=0.1ms idle=4.4ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:18:57.210 [info] Sent 200 in 13ms 13:19:00.143 [info] {"source":"oban","duration":403,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 13:19:12.610 [info] {"source":"oban","duration":3291,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:19:17.045 [info] {"args":{"id":20},"id":202937,"meta":{},"system_time":1767406757045304714,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 13:19:17.046 [debug] QUERY OK source="sources" db=0.3ms idle=1009.8ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [20] 13:19:17.046 [debug] QUERY OK source="settings" db=0.2ms idle=233.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:19:17.047 [debug] QUERY OK source="media_profiles" db=0.6ms idle=233.8ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:19:17.047 [debug] QUERY OK source="settings" db=0.2ms idle=8.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:19:17.047 [debug] Fetching recent media IDs from YouTube API for playlist: UU3HjB3X8jeENm46HCkI0Inw 13:19:17.048 [debug] QUERY OK source="settings" db=0.1ms idle=2.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:19:17.048 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 13:19:17.528 [debug] QUERY OK source="media_items" db=2.8ms idle=479.0ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND m0."media_id" IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [20, "CISwNCR8EXc", "EiIJqc5mV90", "8xJUjtnu72E", "Whh2rDVxvYg", "VybtaBZZqCg", "fuIOAraiRAY", "Ri4qqynMLHk", "xglNhNm95KQ", "5hEq1j_TsEY", "9f5iUsFWqoo", "0SXIhVupLZY", "3gAJpHP3yg4", "8zlnEbQgP74", "EnTFdexbFrM", "P3AU8vUwvAs", "4dQvS_n0uy4", "T5CRSwoP5_w", "cd8IcmBLpXc", "L4nAcT3QYkA", "5gskEcRE1uo", "1xywnh3DqFQ", "fXeqjU4tHqo", "YBMxdPCG_PY", "GB5_4JUB9hc", "EtAUdnvt0kc", "y-5D2HhLbso", "q8kP0pRFRMc", "8mQkTPoWfPo", "U5I92UivGzU", "UoMTKhqTf1U", "oIvzxlDViTo", "kCnh99-yZIs", "orABz0cfQZY", "VKt2PXkavyU", "kYwyB7o7BJs", "UB1FC4Nim1Y", "kN_eMzoJJmA", "4hdpejFLkPc", "ArSlY77uV1w", "2me_AlMFJh8", "OlKsICCPadE", "SjpJZ66rGaU", "iRZp_9irH2g", "CN9qeuO04A4", "BUnuun2sL-8", "XSIfSz3ZEGc", "hW5pHqeC1t4", "_cJV_l9tlaU", "ChT4bsCpwcU", ...] 13:19:17.533 [debug] QUERY OK source="media_items" db=3.8ms idle=483.4ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [20] 13:19:17.536 [debug] QUERY OK source="tasks" db=0.3ms idle=487.9ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [202961, 20, ~U[2026-01-03 02:19:17Z], ~U[2026-01-03 02:19:17Z]] 13:19:17.537 [info] {"args":{"id":20},"id":202937,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":491477,"event":"job:stop","queue_time":295866,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 13:19:19.937 [info] GET /sources/13/media/12738 13:19:19.937 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "12738", "source_id" => "13"} Pipelines: [:browser] 13:19:19.939 [debug] QUERY OK source="media_items" db=1.1ms idle=1125.2ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [12738] 13:19:19.941 [debug] QUERY OK source="tasks" db=1.4ms idle=1126.8ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [12738] 13:19:19.941 [debug] QUERY OK source="sources" db=1.6ms idle=1126.8ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [13] 13:19:19.942 [debug] QUERY OK source="oban_jobs" db=0.6ms idle=1128.8ms SELECT o0."id", o0."state", o0."queue", o0."worker", o0."args", o0."meta", o0."tags", o0."errors", o0."attempt", o0."attempted_by", o0."max_attempts", o0."priority", o0."attempted_at", o0."cancelled_at", o0."completed_at", o0."discarded_at", o0."inserted_at", o0."scheduled_at", o0."id" FROM "oban_jobs" AS o0 WHERE (o0."id" = ?) [191058] 13:19:19.944 [debug] QUERY OK source="settings" db=0.8ms idle=898.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:19:19.944 [debug] QUERY OK source="settings" db=0.4ms idle=5.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:19:19.945 [debug] QUERY OK source="settings" db=0.3ms idle=4.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:19:19.948 [debug] QUERY OK source="media_profiles" db=0.9ms idle=5.5ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:19:19.952 [info] Sent 200 in 15ms 13:19:20.073 [info] {"args":{"id":21},"id":202938,"meta":{},"system_time":1767406760072747426,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 13:19:20.075 [debug] QUERY OK source="sources" db=1.2ms queue=0.1ms idle=128.7ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [21] 13:19:20.076 [debug] QUERY OK source="settings" db=0.8ms queue=0.2ms idle=129.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:19:20.078 [debug] QUERY OK source="media_profiles" db=0.8ms queue=0.1ms idle=129.0ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:19:20.079 [debug] QUERY OK source="settings" db=0.5ms idle=29.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:19:20.079 [debug] Fetching recent media IDs from YouTube API for playlist: UU2-i3KuYoODXsM99Z3-Gm0A 13:19:20.079 [debug] QUERY OK source="settings" db=0.4ms queue=0.1ms idle=6.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:19:20.080 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 13:19:20.446 [debug] QUERY OK source="media_items" db=5.6ms idle=365.5ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND m0."media_id" IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [21, "J5rMffRWoaE", "SpNjg65s29I", "8YoFYb6ahAc", "2z0gjjea0mQ", "2d3dU0R4Sk4", "_TFHZ9W3Jt8", "dqjpFcJG5Cc", "Pm0PXgXMNVY", "YXwzRiYgHHc", "mUK6UT_7PZo", "nE49QFWymsI", "WY4rfxfFsVA", "LHyVvVpA0xM", "HYIwk4qL2os", "RZBQe4RLdZ8", "DN5ES5PlK6c", "OaO4UInG53A", "UqcJk1mPcnQ", "NqSJZesKtFs", "3bsFFOwsQzA", "EaXJ1rQ2v5k", "jnV5Ptgg1Xc", "rXghFt-g_OM", "Y_MU28GV-M0", "OZ1fXb4gcv0", "t7JeRNvBG40", "XG41sdzNz7I", "rQFtIiVV7RA", "TviKrv1FTzc", "0iH3eN6DUbM", "AjzhbnNiJO0", "3Y2fdnw7AwM", "8Z_XpRjS2oo", "RY1Nnw_qOGc", "pUB0TU9UQhI", "eVR3mgSxjUk", "5hGYObRZMPQ", "4MemHNHi_YE", "yM6u1-_JNXo", "VGLq2Tjokl4", "XpV4r2KB0UA", "cvrpvL1kO_8", "Q4kS9l81A0k", "Mq47ro7Pc00", "GAu1Y-5EPeM", "dNIc1vTlbDc", "S1zqKNfggRQ", "zquTrv6kv-U", "-H6sKLcAL9I", ...] 13:19:20.457 [debug] QUERY OK source="media_items" db=8.7ms idle=372.1ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [21] 13:19:20.464 [debug] QUERY OK source="tasks" db=2.1ms idle=381.9ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [202962, 21, ~U[2026-01-03 02:19:20Z], ~U[2026-01-03 02:19:20Z]] 13:19:20.465 [info] {"args":{"id":21},"id":202938,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":391568,"event":"job:stop","queue_time":203558,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 13:19:42.612 [info] {"source":"oban","duration":2117,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:19:49.049 [info] GET /sources/16/media/10067 13:19:49.049 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "10067", "source_id" => "16"} Pipelines: [:browser] 13:19:49.050 [info] GET /sources/3/media/58986 13:19:49.050 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "58986", "source_id" => "3"} Pipelines: [:browser] 13:19:49.049 [info] GET /sources/3/media/54803 13:19:49.050 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "54803", "source_id" => "3"} Pipelines: [:browser] 13:19:49.050 [debug] QUERY OK source="media_items" db=0.5ms queue=0.2ms idle=1236.9ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [10067] 13:19:49.051 [debug] QUERY OK source="media_items" db=0.4ms queue=0.1ms idle=1237.3ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [58986] 13:19:49.051 [debug] QUERY OK source="tasks" db=0.3ms queue=0.2ms idle=1238.1ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [10067] 13:19:49.051 [debug] QUERY OK source="media_items" db=1.0ms queue=0.1ms idle=1237.6ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [54803] 13:19:49.054 [debug] QUERY OK source="sources" db=2.6ms queue=0.1ms idle=933.7ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [16] 13:19:49.054 [debug] QUERY OK source="tasks" db=2.6ms idle=0.8ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [58986] 13:19:49.054 [debug] QUERY OK source="tasks" db=0.5ms idle=2.1ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [54803] 13:19:49.054 [debug] QUERY OK source="sources" db=2.8ms idle=0.7ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [3] 13:19:49.055 [debug] QUERY OK source="sources" db=0.8ms idle=2.1ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [3] 13:19:49.055 [debug] QUERY OK source="settings" db=0.6ms idle=0.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:19:49.056 [debug] QUERY OK source="settings" db=0.6ms idle=1.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:19:49.056 [debug] QUERY OK source="settings" db=1.3ms idle=1.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:19:49.056 [debug] QUERY OK source="settings" db=1.3ms idle=0.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:19:49.057 [debug] QUERY OK source="settings" db=0.4ms idle=0.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:19:49.057 [debug] QUERY OK source="settings" db=0.7ms idle=1.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:19:49.058 [debug] QUERY OK source="settings" db=1.4ms idle=1.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:19:49.059 [debug] QUERY OK source="settings" db=0.8ms idle=1.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:19:49.060 [debug] QUERY OK source="media_profiles" db=0.2ms idle=2.0ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:19:49.060 [debug] QUERY OK source="settings" db=1.0ms idle=1.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:19:49.060 [debug] QUERY OK source="media_profiles" db=1.7ms idle=2.0ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:19:49.061 [info] Sent 200 in 11ms 13:19:49.062 [debug] QUERY OK source="media_profiles" db=0.8ms idle=2.5ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:19:49.066 [info] Sent 200 in 16ms 13:19:49.089 [info] GET /sources/3/media/58977 13:19:49.090 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "58977", "source_id" => "3"} Pipelines: [:browser] 13:19:49.090 [info] Sent 200 in 40ms 13:19:49.092 [debug] QUERY OK source="media_items" db=1.7ms idle=31.3ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [58977] 13:19:49.094 [debug] QUERY OK source="tasks" db=1.3ms idle=32.8ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [58977] 13:19:49.094 [debug] QUERY OK source="sources" db=1.5ms idle=32.5ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [3] 13:19:49.095 [debug] QUERY OK source="oban_jobs" db=0.5ms idle=34.2ms SELECT o0."id", o0."state", o0."queue", o0."worker", o0."args", o0."meta", o0."tags", o0."errors", o0."attempt", o0."attempted_by", o0."max_attempts", o0."priority", o0."attempted_at", o0."cancelled_at", o0."completed_at", o0."discarded_at", o0."inserted_at", o0."scheduled_at", o0."id" FROM "oban_jobs" AS o0 WHERE (o0."id" = ?) [202133] 13:19:49.096 [debug] QUERY OK source="settings" db=0.4ms idle=33.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:19:49.096 [debug] QUERY OK source="settings" db=0.3ms idle=4.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:19:49.097 [debug] QUERY OK source="settings" db=0.1ms idle=3.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:19:49.098 [debug] QUERY OK source="media_profiles" db=0.2ms idle=3.8ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:19:49.107 [info] Sent 200 in 17ms 13:19:49.257 [info] GET /sources/16/media/10022 13:19:49.257 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "10022", "source_id" => "16"} Pipelines: [:browser] 13:19:49.259 [debug] QUERY OK source="media_items" db=0.6ms queue=0.1ms idle=162.2ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [10022] 13:19:49.260 [debug] QUERY OK source="tasks" db=0.5ms queue=0.1ms idle=163.3ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [10022] 13:19:49.261 [debug] QUERY OK source="sources" db=0.6ms idle=162.8ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [16] 13:19:49.262 [debug] QUERY OK source="settings" db=0.4ms idle=163.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:19:49.262 [debug] QUERY OK source="settings" db=0.2ms idle=143.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:19:49.263 [debug] QUERY OK source="settings" db=0.2ms idle=4.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:19:49.265 [debug] QUERY OK source="media_profiles" db=0.3ms idle=3.6ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:19:49.266 [info] Sent 200 in 9ms 13:19:49.808 [info] GET /sources/16/media/10108 13:19:49.808 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "10108", "source_id" => "16"} Pipelines: [:browser] 13:19:49.809 [debug] QUERY OK source="media_items" db=0.3ms idle=547.5ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [10108] 13:19:49.810 [debug] QUERY OK source="tasks" db=0.3ms idle=547.2ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [10108] 13:19:49.810 [debug] QUERY OK source="sources" db=0.9ms idle=546.8ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [16] 13:19:49.811 [debug] QUERY OK source="settings" db=0.5ms idle=547.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:19:49.812 [debug] QUERY OK source="settings" db=0.4ms idle=547.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:19:49.813 [debug] QUERY OK source="settings" db=0.5ms idle=3.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:19:49.815 [debug] QUERY OK source="media_profiles" db=1.1ms idle=4.4ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:19:49.817 [info] Sent 200 in 9ms 13:19:49.986 [info] GET /sources/18/media/43313 13:19:49.986 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "43313", "source_id" => "18"} Pipelines: [:browser] 13:19:49.988 [debug] QUERY OK source="media_items" db=1.0ms idle=176.0ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [43313] 13:19:49.989 [debug] QUERY OK source="tasks" db=0.5ms idle=176.7ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [43313] 13:19:49.989 [debug] QUERY OK source="sources" db=0.9ms idle=176.1ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [18] 13:19:49.990 [debug] QUERY OK source="settings" db=0.2ms idle=176.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:19:49.991 [debug] QUERY OK source="settings" db=0.6ms idle=175.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:19:49.992 [debug] QUERY OK source="settings" db=0.4ms idle=4.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:19:49.994 [debug] QUERY OK source="media_profiles" db=0.7ms idle=4.1ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:19:50.010 [info] Sent 200 in 24ms 13:19:50.179 [info] GET /sources/16/media/10092/edit 13:19:50.179 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "10092", "source_id" => "16"} Pipelines: [:browser] 13:19:50.180 [debug] QUERY OK source="media_items" db=0.4ms idle=189.0ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [10092] 13:19:50.181 [debug] QUERY OK source="settings" db=0.2ms idle=189.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:19:50.181 [debug] QUERY OK source="settings" db=0.3ms queue=0.1ms idle=188.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:19:50.182 [debug] QUERY OK source="settings" db=0.2ms idle=188.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:19:50.184 [info] Sent 200 in 5ms 13:19:50.343 [info] GET /sources/18/media/52162 13:19:50.343 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "52162", "source_id" => "18"} Pipelines: [:browser] 13:19:50.344 [debug] QUERY OK source="media_items" db=0.2ms idle=222.9ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [52162] 13:19:50.345 [debug] QUERY OK source="tasks" db=0.5ms idle=164.4ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [52162] 13:19:50.345 [debug] QUERY OK source="sources" db=0.5ms idle=163.7ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [18] 13:19:50.346 [debug] QUERY OK source="settings" db=0.6ms idle=164.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:19:50.347 [debug] QUERY OK source="settings" db=0.3ms idle=164.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:19:50.348 [debug] QUERY OK source="settings" db=0.4ms idle=3.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:19:50.350 [debug] QUERY OK source="media_profiles" db=0.7ms idle=3.8ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:19:50.358 [info] Sent 200 in 14ms 13:19:50.496 [info] GET /sources/16/media/10033 13:19:50.496 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "10033", "source_id" => "16"} Pipelines: [:browser] 13:19:50.497 [debug] QUERY OK source="media_items" db=0.4ms idle=151.3ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [10033] 13:19:50.499 [debug] QUERY OK source="tasks" db=0.9ms idle=151.2ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [10033] 13:19:50.499 [debug] QUERY OK source="sources" db=1.0ms idle=150.7ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [16] 13:19:50.500 [debug] QUERY OK source="settings" db=0.4ms idle=151.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:19:50.500 [debug] QUERY OK source="settings" db=0.3ms idle=150.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:19:50.501 [debug] QUERY OK source="settings" db=0.3ms idle=3.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:19:50.503 [debug] QUERY OK source="media_profiles" db=0.7ms idle=3.7ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:19:50.505 [info] Sent 200 in 8ms 13:19:50.648 [info] GET /sources/3/media/58972 13:19:50.649 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "58972", "source_id" => "3"} Pipelines: [:browser] 13:19:50.650 [debug] QUERY OK source="media_items" db=0.4ms queue=0.1ms idle=150.3ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [58972] 13:19:50.651 [debug] QUERY OK source="tasks" db=0.4ms idle=150.7ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [58972] 13:19:50.651 [debug] QUERY OK source="sources" db=0.6ms idle=150.3ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [3] 13:19:50.652 [debug] QUERY OK source="settings" db=0.2ms idle=150.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:19:50.653 [debug] QUERY OK source="settings" db=0.2ms idle=149.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:19:50.654 [debug] QUERY OK source="settings" db=0.2ms idle=3.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:19:50.655 [debug] QUERY OK source="media_profiles" db=0.2ms idle=3.5ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:19:50.657 [info] Sent 200 in 8ms 13:19:57.333 [info] GET /sources/16/media/10027 13:19:57.333 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "10027", "source_id" => "16"} Pipelines: [:browser] 13:19:57.335 [info] GET /sources/16/media/10078 13:19:57.335 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "10078", "source_id" => "16"} Pipelines: [:browser] 13:19:57.334 [info] GET /sources/3/media/58972/edit 13:19:57.335 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "58972", "source_id" => "3"} Pipelines: [:browser] 13:19:57.336 [debug] QUERY OK source="media_items" db=0.7ms queue=0.3ms idle=1521.8ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [10027] 13:19:57.336 [debug] QUERY OK source="media_items" db=0.4ms queue=0.2ms idle=1522.7ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [10078] 13:19:57.337 [debug] QUERY OK source="media_items" db=0.7ms idle=1523.0ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [58972] 13:19:57.337 [debug] QUERY OK source="tasks" db=0.7ms queue=0.2ms idle=1196.5ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [10027] 13:19:57.337 [debug] QUERY OK source="tasks" db=0.4ms queue=0.2ms idle=1.2ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [10078] 13:19:57.338 [debug] QUERY OK source="sources" db=1.0ms queue=0.1ms idle=193.9ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [16] 13:19:57.338 [debug] QUERY OK source="settings" db=0.6ms queue=0.1ms idle=0.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:19:57.338 [debug] QUERY OK source="sources" db=1.2ms idle=0.8ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [16] 13:19:57.340 [debug] QUERY OK source="settings" db=0.8ms idle=1.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:19:57.341 [debug] QUERY OK source="settings" db=1.3ms idle=1.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:19:57.341 [debug] QUERY OK source="settings" db=2.1ms queue=0.4ms idle=1.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:19:57.342 [info] GET /sources/18/media/52162/edit 13:19:57.342 [info] GET /sources/3/force_download_pending 13:19:57.342 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "52162", "source_id" => "18"} Pipelines: [:browser] 13:19:57.342 [debug] QUERY OK source="settings" db=0.5ms queue=0.4ms idle=3.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:19:57.343 [debug] QUERY OK source="settings" db=0.7ms idle=1.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:19:57.343 [debug] QUERY OK source="settings" db=0.9ms queue=0.2ms idle=3.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:19:57.343 [debug] QUERY OK source="settings" db=0.3ms idle=1.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:19:57.344 [info] GET /sources/16/media/10033/edit 13:19:57.345 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "10033", "source_id" => "16"} Pipelines: [:browser] 13:19:57.345 [debug] QUERY OK source="media_items" db=1.7ms decode=0.1ms queue=0.1ms idle=1.8ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [52162] 13:19:57.345 [debug] QUERY OK source="settings" db=0.9ms idle=0.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:19:57.345 [debug] QUERY OK source="settings" db=1.3ms queue=0.2ms idle=0.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:19:57.345 [debug] QUERY OK source="settings" db=1.4ms queue=0.1ms idle=0.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:19:57.346 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 13:19:57.346 [info] Sent 200 in 11ms 13:19:57.346 [debug] QUERY OK source="settings" db=0.9ms idle=0.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:19:57.347 [debug] QUERY OK source="media_items" db=0.7ms queue=0.9ms idle=1.8ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [10033] 13:19:57.347 [debug] QUERY OK source="settings" db=0.3ms queue=0.3ms idle=1.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:19:57.348 [debug] QUERY OK source="media_profiles" db=1.0ms idle=1.7ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:19:57.348 [debug] QUERY OK source="settings" db=0.4ms queue=0.2ms idle=0.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:19:57.348 [debug] QUERY OK source="media_profiles" db=0.8ms queue=0.1ms idle=1.9ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:19:57.349 [debug] QUERY OK source="settings" db=0.6ms idle=1.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:19:57.347 [error] #PID<0.9946.0> running PinchflatWeb.Endpoint (connection #PID<0.9944.0>, stream id 1) terminated Server: pinchflat.uiau7e.uncld.dev:80 (http) Request: GET /sources/3/force_download_pending ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/3/force_download_pending (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.9944.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/3/force_download_pending", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 52254}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, zstd, deflate", "host" => "pinchflat.uiau7e.uncld.dev", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)", "via" => "2.0 Caddy", "x-forwarded-for" => "216.73.216.126", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.uiau7e.uncld.dev", method: "GET", owner: #PID<0.9946.0>, params: %{}, path_info: ["sources", "3", "force_download_pending"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.uiau7e.uncld.dev", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {10, 210, 0, 2}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"accept-encoding", "gzip, br, zstd, deflate"}, {"host", "pinchflat.uiau7e.uncld.dev"}, {"user-agent", "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)"}, {"via", "2.0 Caddy"}, {"x-forwarded-for", "216.73.216.126"}, {"x-forwarded-host", "pinchflat.uiau7e.uncld.dev"}, {"x-forwarded-proto", "https"} ], request_path: "/sources/3/force_download_pending", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GIcXHjk6LkkLEdEAAcvB"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.9944.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/3/force_download_pending", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 52254}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, zstd, deflate", "host" => "pinchflat.uiau7e.uncld.dev", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)", "via" => "2.0 Caddy", "x-forwarded-for" => "216.73.216.126", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/3/force_download_pending (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.9944.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/3/force_download_pending", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 52254}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, zstd, deflate", "host" => "pinchflat.uiau7e.uncld.dev", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)", "via" => "2.0 Caddy", "x-forwarded-for" => "216.73.216.126", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.uiau7e.uncld.dev", method: "GET", owner: #PID<0.9946.0>, params: %{}, path_info: ["sources", "3", "force_download_pending"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.uiau7e.uncld.dev", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {10, 210, 0, 2}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"accept-encoding", "gzip, br, zstd, deflate"}, {"host", "pinchflat.uiau7e.uncld.dev"}, {"user-agent", "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)"}, {"via", "2.0 Caddy"}, {"x-forwarded-for", "216.73.216.126"}, {"x-forwarded-host", "pinchflat.uiau7e.uncld.dev"}, (truncated) 13:19:57.349 [debug] QUERY OK source="settings" db=0.5ms queue=0.3ms idle=1.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:19:57.351 [debug] QUERY OK source="settings" db=0.6ms idle=2.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:19:57.351 [info] Sent 200 in 18ms 13:19:57.352 [info] Sent 200 in 16ms 13:19:57.352 [info] Sent 200 in 9ms 13:19:57.356 [info] Sent 200 in 11ms 13:19:57.742 [info] GET /sources/16/media/10072/edit 13:19:57.743 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "10072", "source_id" => "16"} Pipelines: [:browser] 13:19:57.745 [debug] QUERY OK source="media_items" db=0.9ms queue=0.1ms idle=395.3ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [10072] 13:19:57.746 [debug] QUERY OK source="settings" db=0.6ms queue=0.2ms idle=397.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:19:57.747 [debug] QUERY OK source="settings" db=0.5ms idle=397.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:19:57.748 [debug] QUERY OK source="settings" db=0.5ms idle=398.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:19:57.750 [info] Sent 200 in 8ms 13:19:58.511 [info] GET /sources/18/media/59092/edit 13:19:58.511 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "59092", "source_id" => "18"} Pipelines: [:browser] 13:19:58.513 [debug] QUERY OK source="media_items" db=1.0ms queue=0.1ms idle=767.2ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [59092] 13:19:58.514 [debug] QUERY OK source="settings" db=0.6ms queue=0.1ms idle=767.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:19:58.515 [debug] QUERY OK source="settings" db=0.4ms queue=0.1ms idle=767.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:19:58.517 [debug] QUERY OK source="settings" db=0.6ms idle=767.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:19:58.520 [info] Sent 200 in 9ms 13:19:58.663 [info] GET /sources/3/media/59020/edit 13:19:58.663 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "59020", "source_id" => "3"} Pipelines: [:browser] 13:19:58.665 [debug] QUERY OK source="media_items" db=0.8ms queue=0.1ms idle=516.9ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [59020] 13:19:58.666 [debug] QUERY OK source="settings" db=0.4ms idle=152.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:19:58.667 [debug] QUERY OK source="settings" db=0.4ms idle=151.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:19:58.668 [debug] QUERY OK source="settings" db=0.4ms queue=0.1ms idle=152.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:19:58.669 [info] Sent 200 in 6ms 13:19:58.817 [info] GET /sources/3/media/57629/edit 13:19:58.818 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "57629", "source_id" => "3"} Pipelines: [:browser] 13:19:58.819 [debug] QUERY OK source="media_items" db=0.5ms idle=301.6ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [57629] 13:19:58.821 [debug] QUERY OK source="settings" db=0.2ms queue=0.1ms idle=155.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:19:58.821 [debug] QUERY OK source="settings" db=0.2ms queue=0.1ms idle=154.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:19:58.823 [debug] QUERY OK source="settings" db=0.2ms queue=0.1ms idle=155.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:19:58.826 [info] Sent 200 in 8ms 13:19:58.966 [info] GET /sources/16/media/10098 13:19:58.966 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "10098", "source_id" => "16"} Pipelines: [:browser] 13:19:58.967 [debug] QUERY OK source="media_items" db=0.4ms queue=0.1ms idle=298.9ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [10098] 13:19:58.969 [debug] QUERY OK source="tasks" db=0.7ms queue=0.2ms idle=148.9ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [10098] 13:19:58.969 [debug] QUERY OK source="sources" db=0.9ms idle=147.8ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [16] 13:19:58.971 [debug] QUERY OK source="settings" db=0.4ms idle=149.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:19:58.972 [debug] QUERY OK source="settings" db=0.3ms idle=148.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:19:58.973 [debug] QUERY OK source="settings" db=0.3ms idle=5.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:19:58.975 [debug] QUERY OK source="media_profiles" db=0.4ms idle=5.6ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:19:58.980 [info] Sent 200 in 14ms 13:20:00.144 [info] {"source":"oban","duration":544,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 13:20:04.052 [info] GET /sources/16/media/58877/edit 13:20:04.052 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "58877", "source_id" => "16"} Pipelines: [:browser] 13:20:04.052 [info] GET /sources/18/media/10290 13:20:04.053 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "10290", "source_id" => "18"} Pipelines: [:browser] 13:20:04.053 [debug] QUERY OK source="media_items" db=0.7ms idle=1239.4ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [58877] 13:20:04.053 [info] GET /sources/16/media/10098/edit 13:20:04.053 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "10098", "source_id" => "16"} Pipelines: [:browser] 13:20:04.054 [info] GET /sources/18/media/10362 13:20:04.054 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "10362", "source_id" => "18"} Pipelines: [:browser] 13:20:04.054 [debug] QUERY OK source="settings" db=0.5ms queue=0.1ms idle=1240.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:20:04.054 [info] GET /sources/16/media/10067/edit 13:20:04.055 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "10067", "source_id" => "16"} Pipelines: [:browser] 13:20:04.055 [info] GET /sources/16/media/55936 13:20:04.055 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "55936", "source_id" => "16"} Pipelines: [:browser] 13:20:04.055 [debug] QUERY OK source="media_items" db=2.4ms idle=1240.2ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [10290] 13:20:04.056 [debug] QUERY OK source="media_items" db=1.5ms idle=0.8ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [10067] 13:20:04.057 [debug] QUERY OK source="media_items" db=2.7ms idle=891.6ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [10098] 13:20:04.057 [debug] QUERY OK source="settings" db=2.7ms idle=1.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:20:04.058 [debug] QUERY OK source="media_items" db=2.2ms queue=0.3ms idle=0.0ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [55936] 13:20:04.058 [debug] QUERY OK source="tasks" db=1.0ms queue=1.1ms idle=0.0ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [10290] 13:20:04.059 [debug] QUERY OK source="media_items" db=4.4ms idle=241.4ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [10362] 13:20:04.059 [debug] QUERY OK source="sources" db=1.6ms queue=1.0ms idle=0.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [18] 13:20:04.059 [debug] QUERY OK source="settings" db=1.5ms queue=0.9ms idle=0.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:20:04.060 [debug] QUERY OK source="settings" db=0.9ms queue=0.6ms idle=0.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:20:04.060 [debug] QUERY OK source="settings" db=2.4ms queue=0.4ms idle=0.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:20:04.060 [debug] QUERY OK source="tasks" db=1.2ms queue=0.1ms idle=0.0ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [55936] 13:20:04.061 [info] Sent 200 in 9ms 13:20:04.061 [debug] QUERY OK source="sources" db=1.3ms queue=0.3ms idle=0.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [18] 13:20:04.061 [debug] QUERY OK source="settings" db=0.8ms queue=0.6ms idle=0.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:20:04.061 [debug] QUERY OK source="settings" db=0.8ms queue=0.9ms idle=0.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:20:04.061 [debug] QUERY OK source="settings" db=1.9ms queue=0.2ms idle=0.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:20:04.061 [debug] QUERY OK source="sources" db=2.3ms queue=0.4ms idle=0.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [16] 13:20:04.062 [debug] QUERY OK source="tasks" db=0.6ms queue=1.8ms idle=0.0ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [10362] 13:20:04.063 [debug] QUERY OK source="settings" db=1.1ms queue=0.2ms idle=0.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:20:04.063 [debug] QUERY OK source="settings" db=1.1ms idle=0.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:20:04.064 [debug] QUERY OK source="settings" db=1.6ms queue=0.2ms idle=0.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:20:04.064 [debug] QUERY OK source="settings" db=1.6ms idle=0.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:20:04.064 [debug] QUERY OK source="settings" db=1.9ms queue=0.4ms idle=0.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:20:04.064 [info] Sent 200 in 11ms 13:20:04.065 [debug] QUERY OK source="settings" db=0.5ms idle=0.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:20:04.065 [debug] QUERY OK source="settings" db=0.9ms queue=0.4ms idle=0.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:20:04.065 [debug] QUERY OK source="settings" db=0.8ms idle=0.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:20:04.065 [debug] QUERY OK source="settings" db=0.1ms idle=1.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:20:04.066 [debug] QUERY OK source="settings" db=0.6ms queue=0.2ms idle=1.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:20:04.067 [debug] QUERY OK source="media_profiles" db=1.0ms idle=1.2ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:20:04.067 [debug] QUERY OK source="media_profiles" db=0.7ms idle=1.0ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:20:04.068 [debug] QUERY OK source="media_profiles" db=1.6ms queue=0.1ms idle=1.0ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:20:04.069 [info] Sent 200 in 14ms 13:20:04.096 [info] Sent 200 in 43ms 13:20:04.110 [info] Sent 200 in 55ms 13:20:04.114 [info] Sent 200 in 59ms 13:20:04.795 [info] GET /sources/3/media/58986/edit 13:20:04.796 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "58986", "source_id" => "3"} Pipelines: [:browser] 13:20:04.797 [debug] QUERY OK source="media_items" db=0.9ms idle=730.1ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [58986] 13:20:04.799 [debug] QUERY OK source="settings" db=1.1ms idle=730.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:20:04.799 [debug] QUERY OK source="settings" db=0.4ms idle=731.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:20:04.801 [debug] QUERY OK source="settings" db=0.4ms idle=732.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:20:04.802 [info] Sent 200 in 6ms 13:20:04.951 [info] GET /sources/3/media/58977/edit 13:20:04.951 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "58977", "source_id" => "3"} Pipelines: [:browser] 13:20:04.952 [debug] QUERY OK source="media_items" db=0.8ms idle=786.5ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [58977] 13:20:04.953 [debug] QUERY OK source="settings" db=0.4ms idle=155.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:20:04.954 [debug] QUERY OK source="settings" db=0.7ms idle=154.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:20:04.956 [debug] QUERY OK source="settings" db=0.4ms idle=155.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:20:04.957 [info] Sent 200 in 6ms 13:20:05.103 [info] GET /sources/16/media/10022/edit 13:20:05.104 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "10022", "source_id" => "16"} Pipelines: [:browser] 13:20:05.105 [debug] QUERY OK source="media_items" db=0.4ms idle=303.5ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [10022] 13:20:05.106 [debug] QUERY OK source="settings" db=0.4ms idle=153.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:20:05.106 [debug] QUERY OK source="settings" db=0.3ms idle=152.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:20:05.108 [debug] QUERY OK source="settings" db=0.5ms idle=152.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:20:05.109 [info] Sent 200 in 6ms 13:20:05.257 [info] GET /sources/16/media/10108/edit 13:20:05.257 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "10108", "source_id" => "16"} Pipelines: [:browser] 13:20:05.259 [debug] QUERY OK source="media_items" db=0.4ms queue=0.1ms idle=153.3ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [10108] 13:20:05.260 [debug] QUERY OK source="settings" db=0.3ms queue=0.1ms idle=153.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:20:05.260 [debug] QUERY OK source="settings" db=0.2ms idle=153.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:20:05.262 [debug] QUERY OK source="settings" db=0.3ms idle=153.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:20:05.263 [info] Sent 200 in 6ms 13:20:05.553 [info] GET /sources/3/media/58991 13:20:05.554 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "58991", "source_id" => "3"} Pipelines: [:browser] 13:20:05.555 [debug] QUERY OK source="media_items" db=0.4ms queue=0.1ms idle=387.1ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [58991] 13:20:05.556 [debug] QUERY OK source="tasks" db=0.5ms queue=0.1ms idle=297.0ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [58991] 13:20:05.557 [debug] QUERY OK source="sources" db=0.8ms idle=296.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [3] 13:20:05.558 [debug] QUERY OK source="settings" db=0.7ms idle=297.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:20:05.559 [debug] QUERY OK source="settings" db=0.3ms idle=296.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:20:05.560 [debug] QUERY OK source="settings" db=0.6ms idle=4.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:20:05.562 [debug] QUERY OK source="media_profiles" db=0.6ms idle=4.7ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:20:05.563 [info] Sent 200 in 10ms 13:20:12.615 [info] {"source":"oban","duration":1652,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:20:14.198 [info] GET /sources/13/media/12741 13:20:14.198 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "12741", "source_id" => "13"} Pipelines: [:browser] 13:20:14.199 [debug] QUERY OK source="media_items" db=0.5ms idle=1386.0ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [12741] 13:20:14.200 [debug] QUERY OK source="sources" db=0.4ms idle=1013.3ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [13] 13:20:14.201 [debug] QUERY OK source="tasks" db=0.9ms idle=1386.9ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [12741] 13:20:14.202 [debug] QUERY OK source="oban_jobs" db=0.7ms idle=388.5ms SELECT o0."id", o0."state", o0."queue", o0."worker", o0."args", o0."meta", o0."tags", o0."errors", o0."attempt", o0."attempted_by", o0."max_attempts", o0."priority", o0."attempted_at", o0."cancelled_at", o0."completed_at", o0."discarded_at", o0."inserted_at", o0."scheduled_at", o0."id" FROM "oban_jobs" AS o0 WHERE (o0."id" = ?) [184032] 13:20:14.203 [debug] QUERY OK source="settings" db=0.6ms idle=11.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:20:14.205 [debug] QUERY OK source="settings" db=1.0ms queue=0.1ms idle=4.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:20:14.207 [debug] QUERY OK source="settings" db=0.5ms queue=0.1ms idle=5.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:20:14.209 [debug] QUERY OK source="media_profiles" db=0.4ms idle=7.9ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:20:14.214 [info] Sent 200 in 16ms 13:20:33.258 [info] {"args":{"id":5},"id":202129,"meta":{},"system_time":1767406833258196013,"max_attempts":20,"queue":"media_collection_indexing","worker":"Pinchflat.SlowIndexing.MediaCollectionIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","media_collection_indexing","show_in_dashboard"]} 13:20:33.259 [debug] QUERY OK source="sources" db=0.4ms idle=1445.5ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [5] 13:20:33.259 [debug] QUERY OK source="settings" db=0.3ms idle=1446.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:20:33.326 [debug] QUERY OK source="media_items" db=65.1ms queue=0.6ms idle=1013.9ms SELECT count(*) FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [5] 13:20:33.327 [debug] QUERY OK source="media_items" db=1.2ms queue=0.2ms idle=75.4ms SELECT count(*) FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND NOT (m0."media_filepath" IS NULL)) [5] 13:20:33.328 [debug] QUERY OK source="media_profiles" db=0.3ms queue=0.1ms idle=70.2ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:20:33.330 [debug] QUERY OK source="settings" db=0.2ms idle=70.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:20:33.330 [debug] QUERY OK source="settings" db=0.2ms idle=70.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:20:33.346 [debug] QUERY OK source="media_items" db=12.5ms queue=0.7ms idle=6.7ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."source_id" = ?) ORDER BY m0."uploaded_at" DESC LIMIT 50 OFFSET 20 [5] 13:20:33.351 [debug] Running yt-dlp command for action: get_media_attributes_for_collection 13:20:33.352 [debug] Current batch of media processed. Will check again in 1000ms 13:20:33.353 [debug] QUERY OK source="settings" db=0.8ms idle=24.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:20:33.353 [debug] QUERY OK source="settings" db=0.4ms idle=24.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:20:33.354 [debug] QUERY OK source="settings" db=0.1ms idle=23.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:20:33.354 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/@CodeSync --simulate --skip-download --ignore-no-formats-error --no-warnings --output /downloads/CodeSync/Season %(upload_date>%Y)S/s%(upload_date>%Y)Se%(upload_date>%m%d)S00 - %(title)S.%(ext)S --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --break-on-existing --download-archive /tmp/pinchflat/data/e4/98/e4987a319ebd7e0cb5e4bd00080295e780aae2ed2fad9d404e4e9eaf5f3e2441.txt --print-to-file %(.{id,title,live_status,original_url,description,aspect_ratio,duration,upload_date,timestamp,playlist_index,filename})j /tmp/pinchflat/data/04/a6/04a6934811066a3f978041c4ae3a6f1362b4ea6f25ceaf21b45264ccda8b761b.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 13:20:34.353 [debug] Current batch of media processed. Will check again in 1000ms 13:20:35.354 [debug] Current batch of media processed. Will check again in 1000ms 13:20:36.354 [debug] Current batch of media processed. Will check again in 1000ms 13:20:37.355 [debug] Current batch of media processed. Will check again in 1000ms 13:20:38.357 [debug] Current batch of media processed. Will check again in 1000ms 13:20:39.358 [debug] Current batch of media processed. Will check again in 1000ms 13:20:40.358 [debug] Current batch of media processed. Will check again in 1000ms 13:20:41.360 [debug] Current batch of media processed. Will check again in 1000ms 13:20:42.361 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "✨This talk was recorded at ElixirConf EU 2025. If you're curious about our upcoming event, check https://elixirconf.eu ✨\n\nAbstract:\nIt's 2022 and our software feels like 1999. Our developer pace is fine but the habitat is crumbling, the technology is outdated. So in January 2023, we took the plunge and started building the new town over in Elixir Land. \nIn this talk, we share our approach to the technology shift and how we integrate this long-term goal into our business as usual, where we focus on modern software engineering with small incremental steps. We'll take a look at the challenges we have faced and are still facing, some of which are: communicating between old and new system, shifting to functional programming, making existing data usable in Ecto, building bridges and shifting traffic and last but not least doing this all without the user noticing. We'll also take a look at a real-life feature that went from ugly duckling to shiny new with the help of the strangler fig pattern.\n\nLet's keep in touch! Follow us on: \n💥 Bluesky: https://elixirconf.bsky.social\n💥 X: https://twitter.com/ElixirConfEU \n💥 Facebook: https://www.facebook.com/CodeSyncGlobal \n💥 LinkedIn: https://www.linkedin.com/company/code-sync\n💥 Mastodon: https://genserver.social/codesync", "duration" => 1919, "filename" => "/downloads/CodeSync/Season 2025/s2025e122600 - Turn Old into New: Moving to Elixir Feature by Feature - Anita Ludermann | ElixirConf EU 2025.mp4", "id" => "CcUb7Ky2oSI", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=CcUb7Ky2oSI", "playlist_index" => 1, "timestamp" => 1766763020, "title" => "Turn Old into New: Moving to Elixir Feature by Feature - Anita Ludermann | ElixirConf EU 2025", "upload_date" => "20251226"} 13:20:42.363 [debug] QUERY OK source="sources" db=0.4ms queue=0.2ms idle=1549.4ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" IN (?)) [5] 13:20:42.364 [debug] QUERY OK source="sources" db=0.5ms queue=0.1ms idle=1550.7ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [5] 13:20:42.373 [debug] QUERY OK source="media_items" db=9.4ms idle=1551.5ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-12-26 15:30:20Z], 5] 13:20:42.382 [debug] QUERY OK source="media_items" db=7.9ms idle=1099.5ms INSERT INTO "media_items" AS m0 ("description","title","uuid","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","prevent_download","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["✨This talk was recorded at ElixirConf EU 2025. If you're curious about our upcoming event, check https://elixirconf.eu ✨\n\nAbstract:\nIt's 2022 and our software feels like 1999. Our developer pace is fine but the habitat is crumbling, the technology is outdated. So in January 2023, we took the plunge and started building the new town over in Elixir Land. \nIn this talk, we share our approach to the technology shift and how we integrate this long-term goal into our business as usual, where we focus on modern software engineering with small incremental steps. We'll take a look at the challenges we have faced and are still facing, some of which are: communicating between old and new system, shifting to functional programming, making existing data usable in Ecto, building bridges and shifting traffic and last but not least doing this all without the user noticing. We'll also take a look at a real-life feature that went from ugly duckling to shiny new with the help of the strangler fig pattern.\n\nLet's keep in touch! Follow us on: \n💥 Bluesky: https://elixirconf.bsky.social\n💥 X: https://twitter.com/ElixirConfEU \n💥 Facebook: https://www.facebook.com/CodeSyncGlobal \n💥 LinkedIn: https://www.linkedin.com/company/code-sync\n💥 Mastodon: https://genserver.social/codesync", "Turn Old into New: Moving to Elixir Feature by Feature - Anita Ludermann | ElixirConf EU 2025", "5a0b3b9b-d4c6-49cd-9ef8-50d1b5e849f3", 1919, false, "CcUb7Ky2oSI", "https://www.youtube.com/watch?v=CcUb7Ky2oSI", 1, "/downloads/CodeSync/Season 2025/s2025e122600 - Turn Old into New: Moving to Elixir Feature by Feature - Anita Ludermann | ElixirConf EU 2025.mp4", false, false, false, 5, [], 98, ~U[2025-12-26 15:30:20Z], ~U[2026-01-03 02:20:42Z], ~U[2026-01-03 02:20:42Z], "✨This talk was recorded at ElixirConf EU 2025. If you're curious about our upcoming event, check https://elixirconf.eu ✨\n\nAbstract:\nIt's 2022 and our software feels like 1999. Our developer pace is fine but the habitat is crumbling, the technology is outdated. So in January 2023, we took the plunge and started building the new town over in Elixir Land. \nIn this talk, we share our approach to the technology shift and how we integrate this long-term goal into our business as usual, where we focus on modern software engineering with small incremental steps. We'll take a look at the challenges we have faced and are still facing, some of which are: communicating between old and new system, shifting to functional programming, making existing data usable in Ecto, building bridges and shifting traffic and last but not least doing this all without the user noticing. We'll also take a look at a real-life feature that went from ugly duckling to shiny new with the help of the strangler fig pattern.\n\nLet's keep in touch! Follow us on: \n💥 Bluesky: https://elixirconf.bsky.social\n💥 X: https://twitter.com/ElixirConfEU \n💥 Facebook: https://www.facebook.com/CodeSyncGlobal \n💥 LinkedIn: https://www.linkedin.com/company/code-sync\n💥 Mastodon: https://genserver.social/codesync", "Turn Old into New: Moving to Elixir Feature by Feature - Anita Ludermann | ElixirConf EU 2025", 1919, false, "CcUb7Ky2oSI", "https://www.youtube.com/watch?v=CcUb7Ky2oSI", "/downloads/CodeSync/Season 2025/s2025e122600 - Turn Old into New: Moving to Elixir Feature by Feature - Anita Ludermann | ElixirConf EU 2025.mp4", false, 5, ~U[2025-12-26 15:30:20Z]] 13:20:42.383 [debug] QUERY OK source="sources" db=0.7ms idle=104.4ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [5] 13:20:42.384 [debug] QUERY OK source="media_profiles" db=0.5ms idle=20.9ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:20:42.385 [debug] QUERY OK source="media_items" db=0.9ms idle=20.6ms SELECT 1 FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) LIMIT 1 [58546] 13:20:42.386 [info] Kicking off download for media item #58546 (CcUb7Ky2oSI) 13:20:42.389 [debug] Current batch of media processed. Will check again in 1000ms 13:20:42.619 [info] {"source":"oban","duration":2157,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:20:43.390 [debug] Current batch of media processed. Will check again in 1000ms 13:20:44.391 [debug] Current batch of media processed. Will check again in 1000ms 13:20:45.392 [debug] Current batch of media processed. Will check again in 1000ms 13:20:46.393 [debug] Current batch of media processed. Will check again in 1000ms 13:20:47.394 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "✨This talk was recorded at ElixirConf EU 2025. If you're curious about our upcoming event, check https://elixirconf.eu ✨\n\nAbstract:\nThis talk will discuss the ongoing development of Trellis, a fully open-source hardware platform built for Nerves. Think of it as an open-source Raspberry Pi, but designed to be easy to adapt to produce your own custom circuit boards for Nerves and Elixir. We’ll discuss the benefits of building custom hardware for your products, and how open source unlocks even more rapid prototyping for Nerves and Elixir in embedded device development. Finally, I won’t just talk about how customizable Trellis is, I will also show live just how easy it is to modify the designs to create a custom circuit board which can be assembled and shipped to you in two weeks.\n\nLet's keep in touch! Follow us on: \n💥 Bluesky: https://elixirconf.bsky.social\n💥 X: https://twitter.com/ElixirConfEU \n💥 Facebook: https://www.facebook.com/CodeSyncGlobal \n💥 LinkedIn: https://www.linkedin.com/company/code-sync\n💥 Mastodon: https://genserver.social/codesync", "duration" => 1329, "filename" => "/downloads/CodeSync/Season 2025/s2025e122500 - Introducing Trellis: Open Source Hardware for Nerves - Gus Workman | ElixirConf EU 2025.mp4", "id" => "XgMDTAKd7-4", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=XgMDTAKd7-4", "playlist_index" => 2, "timestamp" => 1766667659, "title" => "Introducing Trellis: Open Source Hardware for Nerves - Gus Workman | ElixirConf EU 2025", "upload_date" => "20251225"} 13:20:47.395 [debug] QUERY OK source="sources" db=0.2ms queue=0.1ms idle=1581.8ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" IN (?)) [5] 13:20:47.396 [debug] QUERY OK source="sources" db=0.2ms queue=0.1ms idle=1582.7ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [5] 13:20:47.403 [debug] QUERY OK source="media_items" db=6.5ms idle=1583.4ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-12-25 13:00:59Z], 5] 13:20:47.416 [debug] QUERY OK source="media_items" db=11.3ms queue=0.1ms idle=1113.4ms INSERT INTO "media_items" AS m0 ("description","title","uuid","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","prevent_download","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["✨This talk was recorded at ElixirConf EU 2025. If you're curious about our upcoming event, check https://elixirconf.eu ✨\n\nAbstract:\nThis talk will discuss the ongoing development of Trellis, a fully open-source hardware platform built for Nerves. Think of it as an open-source Raspberry Pi, but designed to be easy to adapt to produce your own custom circuit boards for Nerves and Elixir. We’ll discuss the benefits of building custom hardware for your products, and how open source unlocks even more rapid prototyping for Nerves and Elixir in embedded device development. Finally, I won’t just talk about how customizable Trellis is, I will also show live just how easy it is to modify the designs to create a custom circuit board which can be assembled and shipped to you in two weeks.\n\nLet's keep in touch! Follow us on: \n💥 Bluesky: https://elixirconf.bsky.social\n💥 X: https://twitter.com/ElixirConfEU \n💥 Facebook: https://www.facebook.com/CodeSyncGlobal \n💥 LinkedIn: https://www.linkedin.com/company/code-sync\n💥 Mastodon: https://genserver.social/codesync", "Introducing Trellis: Open Source Hardware for Nerves - Gus Workman | ElixirConf EU 2025", "ec837671-06cb-49f3-aa8b-074f034ec6b2", 1329, false, "XgMDTAKd7-4", "https://www.youtube.com/watch?v=XgMDTAKd7-4", 2, "/downloads/CodeSync/Season 2025/s2025e122500 - Introducing Trellis: Open Source Hardware for Nerves - Gus Workman | ElixirConf EU 2025.mp4", false, false, false, 5, [], 98, ~U[2025-12-25 13:00:59Z], ~U[2026-01-03 02:20:47Z], ~U[2026-01-03 02:20:47Z], "✨This talk was recorded at ElixirConf EU 2025. If you're curious about our upcoming event, check https://elixirconf.eu ✨\n\nAbstract:\nThis talk will discuss the ongoing development of Trellis, a fully open-source hardware platform built for Nerves. Think of it as an open-source Raspberry Pi, but designed to be easy to adapt to produce your own custom circuit boards for Nerves and Elixir. We’ll discuss the benefits of building custom hardware for your products, and how open source unlocks even more rapid prototyping for Nerves and Elixir in embedded device development. Finally, I won’t just talk about how customizable Trellis is, I will also show live just how easy it is to modify the designs to create a custom circuit board which can be assembled and shipped to you in two weeks.\n\nLet's keep in touch! Follow us on: \n💥 Bluesky: https://elixirconf.bsky.social\n💥 X: https://twitter.com/ElixirConfEU \n💥 Facebook: https://www.facebook.com/CodeSyncGlobal \n💥 LinkedIn: https://www.linkedin.com/company/code-sync\n💥 Mastodon: https://genserver.social/codesync", "Introducing Trellis: Open Source Hardware for Nerves - Gus Workman | ElixirConf EU 2025", 1329, false, "XgMDTAKd7-4", "https://www.youtube.com/watch?v=XgMDTAKd7-4", "/downloads/CodeSync/Season 2025/s2025e122500 - Introducing Trellis: Open Source Hardware for Nerves - Gus Workman | ElixirConf EU 2025.mp4", false, 5, ~U[2025-12-25 13:00:59Z]] 13:20:47.418 [debug] QUERY OK source="sources" db=1.1ms queue=0.2ms idle=122.5ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [5] 13:20:47.420 [debug] QUERY OK source="media_profiles" db=0.8ms queue=0.1ms idle=23.5ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:20:47.421 [debug] QUERY OK source="media_items" db=1.0ms queue=0.1ms idle=24.2ms SELECT 1 FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) LIMIT 1 [58548] 13:20:47.422 [debug] Current batch of media processed. Will check again in 1000ms 13:20:48.423 [debug] Current batch of media processed. Will check again in 1000ms 13:20:49.424 [debug] Current batch of media processed. Will check again in 1000ms 13:20:50.425 [debug] Current batch of media processed. Will check again in 1000ms 13:20:51.426 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "✨This talk was recorded at ElixirConf EU 2025. If you're curious about our upcoming event, check https://elixirconf.eu ✨\n\nAbstract:\nLet’s dive into the evolution of an Elixir backend application responsible for hotel online reservations.\nThis application started small as a minimum viable product (MVP), implementing a synchronous booking flow in the beginning. As the application and the product were growing, also some problems and limitations were faced, incremental steps were taken to improve the booking flow, initially with a simple asynchronous approach using Elixir built-in capabilities, until reaching an event-driven architecture to execute the different processes of the booking flow in a distributed way.\nThe final result made the entire booking process more reliable, increased the performance of the application, mitigated some issues and improved the customers’ experience.\n\nLet's keep in touch! Follow us on: \n💥 Bluesky: https://elixirconf.bsky.social\n💥 X: https://twitter.com/ElixirConfEU \n💥 Facebook: https://www.facebook.com/CodeSyncGlobal \n💥 LinkedIn: https://www.linkedin.com/company/code-sync\n💥 Mastodon: https://genserver.social/codesync", "duration" => 2261, "filename" => "/downloads/CodeSync/Season 2025/s2025e121900 - Making Bookings Asynchronously - Fernando Hamasaki de Amorim & Rauan Assis | ElixirConf EU 2025.mp4", "id" => "lrn5BcKok8c", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=lrn5BcKok8c", "playlist_index" => 3, "timestamp" => 1766154646, "title" => "Making Bookings Asynchronously - Fernando Hamasaki de Amorim & Rauan Assis | ElixirConf EU 2025", "upload_date" => "20251219"} 13:20:51.428 [debug] QUERY OK source="sources" db=0.9ms queue=0.2ms idle=614.1ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" IN (?)) [5] 13:20:51.430 [debug] QUERY OK source="sources" db=0.5ms queue=0.2ms idle=615.9ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [5] 13:20:51.447 [debug] QUERY OK source="media_items" db=16.9ms queue=0.1ms idle=617.1ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-12-19 14:30:46Z], 5] 13:20:51.455 [debug] QUERY OK source="media_items" db=5.7ms queue=0.1ms idle=635.1ms INSERT INTO "media_items" AS m0 ("description","title","uuid","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","prevent_download","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["✨This talk was recorded at ElixirConf EU 2025. If you're curious about our upcoming event, check https://elixirconf.eu ✨\n\nAbstract:\nLet’s dive into the evolution of an Elixir backend application responsible for hotel online reservations.\nThis application started small as a minimum viable product (MVP), implementing a synchronous booking flow in the beginning. As the application and the product were growing, also some problems and limitations were faced, incremental steps were taken to improve the booking flow, initially with a simple asynchronous approach using Elixir built-in capabilities, until reaching an event-driven architecture to execute the different processes of the booking flow in a distributed way.\nThe final result made the entire booking process more reliable, increased the performance of the application, mitigated some issues and improved the customers’ experience.\n\nLet's keep in touch! Follow us on: \n💥 Bluesky: https://elixirconf.bsky.social\n💥 X: https://twitter.com/ElixirConfEU \n💥 Facebook: https://www.facebook.com/CodeSyncGlobal \n💥 LinkedIn: https://www.linkedin.com/company/code-sync\n💥 Mastodon: https://genserver.social/codesync", "Making Bookings Asynchronously - Fernando Hamasaki de Amorim & Rauan Assis | ElixirConf EU 2025", "c192040b-d4b0-494f-ac00-157f4efc0c04", 2261, false, "lrn5BcKok8c", "https://www.youtube.com/watch?v=lrn5BcKok8c", 3, "/downloads/CodeSync/Season 2025/s2025e121900 - Making Bookings Asynchronously - Fernando Hamasaki de Amorim & Rauan Assis | ElixirConf EU 2025.mp4", false, false, false, 5, [], 98, ~U[2025-12-19 14:30:46Z], ~U[2026-01-03 02:20:51Z], ~U[2026-01-03 02:20:51Z], "✨This talk was recorded at ElixirConf EU 2025. If you're curious about our upcoming event, check https://elixirconf.eu ✨\n\nAbstract:\nLet’s dive into the evolution of an Elixir backend application responsible for hotel online reservations.\nThis application started small as a minimum viable product (MVP), implementing a synchronous booking flow in the beginning. As the application and the product were growing, also some problems and limitations were faced, incremental steps were taken to improve the booking flow, initially with a simple asynchronous approach using Elixir built-in capabilities, until reaching an event-driven architecture to execute the different processes of the booking flow in a distributed way.\nThe final result made the entire booking process more reliable, increased the performance of the application, mitigated some issues and improved the customers’ experience.\n\nLet's keep in touch! Follow us on: \n💥 Bluesky: https://elixirconf.bsky.social\n💥 X: https://twitter.com/ElixirConfEU \n💥 Facebook: https://www.facebook.com/CodeSyncGlobal \n💥 LinkedIn: https://www.linkedin.com/company/code-sync\n💥 Mastodon: https://genserver.social/codesync", "Making Bookings Asynchronously - Fernando Hamasaki de Amorim & Rauan Assis | ElixirConf EU 2025", 2261, false, "lrn5BcKok8c", "https://www.youtube.com/watch?v=lrn5BcKok8c", "/downloads/CodeSync/Season 2025/s2025e121900 - Making Bookings Asynchronously - Fernando Hamasaki de Amorim & Rauan Assis | ElixirConf EU 2025.mp4", false, 5, ~U[2025-12-19 14:30:46Z]] 13:20:51.456 [debug] QUERY OK source="sources" db=0.7ms queue=0.1ms idle=146.5ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [5] 13:20:51.457 [debug] QUERY OK source="media_profiles" db=0.6ms queue=0.1ms idle=28.5ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:20:51.459 [debug] QUERY OK source="media_items" db=0.8ms idle=28.4ms SELECT 1 FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) LIMIT 1 [58551] 13:20:51.459 [debug] Current batch of media processed. Will check again in 1000ms 13:20:52.461 [debug] Current batch of media processed. Will check again in 1000ms 13:20:53.462 [debug] Current batch of media processed. Will check again in 1000ms 13:20:54.462 [debug] Current batch of media processed. Will check again in 1000ms 13:20:55.464 [debug] Current batch of media processed. Will check again in 1000ms 13:20:56.465 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "✨This talk was recorded at ElixirConf EU 2025. If you're curious about our upcoming event, check https://elixirconf.eu ✨\n\nAbstract:\nLivebook is a collaborative web application underpinned by Phoenix LiveView and Erlang distribution. It has become a widely adopted tool within Elixir ecosystem, a subject of several talks, and a canvas for many more. In this talk we will have a look at a few implementation aspects of Livebook itself to understand how it leverages the platform.\n\nLet's keep in touch! Follow us on: \n💥 Bluesky: https://elixirconf.bsky.social\n💥 X: https://twitter.com/ElixirConfEU \n💥 Facebook: https://www.facebook.com/CodeSyncGlobal \n💥 LinkedIn: https://www.linkedin.com/company/code-sync\n💥 Mastodon: https://genserver.social/codesync", "duration" => 2193, "filename" => "/downloads/CodeSync/Season 2025/s2025e121800 - Livebook Behind the Cover - Jonatan Kłosko | ElixirConf EU 2025 | ElixirConf EU 2025.mp4", "id" => "2GUvk_BNJRE", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=2GUvk_BNJRE", "playlist_index" => 4, "timestamp" => 1766066405, "title" => "Livebook Behind the Cover - Jonatan Kłosko | ElixirConf EU 2025 | ElixirConf EU 2025", "upload_date" => "20251218"} 13:20:56.466 [debug] QUERY OK source="sources" db=0.7ms queue=0.1ms idle=1653.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" IN (?)) [5] 13:20:56.469 [debug] QUERY OK source="sources" db=1.4ms queue=0.1ms idle=1654.2ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [5] 13:20:56.489 [debug] QUERY OK source="media_items" db=19.4ms queue=0.2ms idle=1656.4ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-12-18 14:00:05Z], 5] 13:20:56.495 [debug] QUERY OK source="media_items" db=4.1ms queue=0.1ms idle=1167.0ms INSERT INTO "media_items" AS m0 ("description","title","uuid","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","prevent_download","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["✨This talk was recorded at ElixirConf EU 2025. If you're curious about our upcoming event, check https://elixirconf.eu ✨\n\nAbstract:\nLivebook is a collaborative web application underpinned by Phoenix LiveView and Erlang distribution. It has become a widely adopted tool within Elixir ecosystem, a subject of several talks, and a canvas for many more. In this talk we will have a look at a few implementation aspects of Livebook itself to understand how it leverages the platform.\n\nLet's keep in touch! Follow us on: \n💥 Bluesky: https://elixirconf.bsky.social\n💥 X: https://twitter.com/ElixirConfEU \n💥 Facebook: https://www.facebook.com/CodeSyncGlobal \n💥 LinkedIn: https://www.linkedin.com/company/code-sync\n💥 Mastodon: https://genserver.social/codesync", "Livebook Behind the Cover - Jonatan Kłosko | ElixirConf EU 2025 | ElixirConf EU 2025", "72fd6c40-6f92-44ba-ba1a-63537aec90e7", 2193, false, "2GUvk_BNJRE", "https://www.youtube.com/watch?v=2GUvk_BNJRE", 4, "/downloads/CodeSync/Season 2025/s2025e121800 - Livebook Behind the Cover - Jonatan Kłosko | ElixirConf EU 2025 | ElixirConf EU 2025.mp4", false, false, false, 5, [], 98, ~U[2025-12-18 14:00:05Z], ~U[2026-01-03 02:20:56Z], ~U[2026-01-03 02:20:56Z], "✨This talk was recorded at ElixirConf EU 2025. If you're curious about our upcoming event, check https://elixirconf.eu ✨\n\nAbstract:\nLivebook is a collaborative web application underpinned by Phoenix LiveView and Erlang distribution. It has become a widely adopted tool within Elixir ecosystem, a subject of several talks, and a canvas for many more. In this talk we will have a look at a few implementation aspects of Livebook itself to understand how it leverages the platform.\n\nLet's keep in touch! Follow us on: \n💥 Bluesky: https://elixirconf.bsky.social\n💥 X: https://twitter.com/ElixirConfEU \n💥 Facebook: https://www.facebook.com/CodeSyncGlobal \n💥 LinkedIn: https://www.linkedin.com/company/code-sync\n💥 Mastodon: https://genserver.social/codesync", "Livebook Behind the Cover - Jonatan Kłosko | ElixirConf EU 2025 | ElixirConf EU 2025", 2193, false, "2GUvk_BNJRE", "https://www.youtube.com/watch?v=2GUvk_BNJRE", "/downloads/CodeSync/Season 2025/s2025e121800 - Livebook Behind the Cover - Jonatan Kłosko | ElixirConf EU 2025 | ElixirConf EU 2025.mp4", false, 5, ~U[2025-12-18 14:00:05Z]] 13:20:56.497 [debug] QUERY OK source="sources" db=1.3ms queue=0.1ms idle=168.7ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [5] 13:20:56.498 [debug] QUERY OK source="media_profiles" db=0.8ms queue=0.1ms idle=30.6ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:20:56.500 [debug] QUERY OK source="media_items" db=1.2ms queue=0.1ms idle=30.8ms SELECT 1 FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) LIMIT 1 [58555] 13:20:56.501 [debug] Current batch of media processed. Will check again in 1000ms 13:20:56.772 [info] GET /sources/16/media/10078/edit 13:20:56.772 [info] GET /sources/21 13:20:56.773 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "10078", "source_id" => "16"} Pipelines: [:browser] 13:20:56.773 [debug] Processing with PinchflatWeb.Sources.SourceController.show/2 Parameters: %{"delete_files" => "true", "id" => "21"} Pipelines: [:browser] 13:20:56.774 [info] GET /sources/18/media/59088 13:20:56.774 [info] GET /sources/16/media/10027/edit 13:20:56.774 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "59088", "source_id" => "18"} Pipelines: [:browser] 13:20:56.775 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "10027", "source_id" => "16"} Pipelines: [:browser] 13:20:56.775 [debug] QUERY OK source="sources" db=1.9ms queue=0.1ms idle=279.2ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [21] 13:20:56.776 [debug] QUERY OK source="media_items" db=2.8ms queue=0.1ms idle=284.5ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [10078] 13:20:56.776 [debug] QUERY OK source="media_items" db=1.4ms queue=0.1ms idle=278.3ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [59088] 13:20:56.777 [debug] QUERY OK source="media_items" db=2.0ms queue=0.1ms idle=276.8ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [10027] 13:20:56.777 [debug] QUERY OK source="settings" db=0.4ms queue=0.1ms idle=1.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:20:56.777 [debug] QUERY OK source="media_profiles" db=1.3ms queue=0.1ms idle=275.8ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:20:56.778 [debug] QUERY OK source="tasks" db=0.3ms idle=1.0ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [59088] 13:20:56.778 [debug] QUERY OK source="settings" db=0.2ms queue=0.1ms idle=1.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:20:56.779 [debug] QUERY OK source="settings" db=0.5ms queue=0.2ms idle=0.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:20:56.779 [debug] QUERY OK source="sources" db=0.9ms queue=0.3ms idle=0.9ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [18] 13:20:56.780 [debug] QUERY OK source="settings" db=0.4ms queue=0.4ms idle=1.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:20:56.781 [info] GET /sources/16 13:20:56.781 [debug] QUERY OK source="settings" db=0.6ms queue=0.4ms idle=2.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:20:56.781 [debug] Processing with PinchflatWeb.Sources.SourceController.show/2 Parameters: %{"delete_files" => "true", "id" => "16"} Pipelines: [:browser] 13:20:56.782 [debug] QUERY OK source="settings" db=0.8ms queue=0.1ms idle=1.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:20:56.782 [debug] QUERY OK source="settings" db=1.4ms queue=0.1ms idle=1.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:20:56.782 [debug] QUERY OK source="tasks" db=3.4ms queue=0.1ms idle=1.2ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at" FROM "tasks" AS t0 INNER JOIN "oban_jobs" AS o1 ON o1."id" = t0."job_id" WHERE (t0."source_id" = ?) AND (o1."state" IN (?,?,?,?)) [21, "executing", "available", "scheduled", "retryable"] 13:20:56.783 [debug] QUERY OK source="sources" db=0.6ms queue=0.2ms idle=2.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [16] 13:20:56.783 [debug] QUERY OK source="oban_jobs" db=0.6ms idle=0.4ms SELECT o0."id", o0."state", o0."queue", o0."worker", o0."args", o0."meta", o0."tags", o0."errors", o0."attempt", o0."attempted_by", o0."max_attempts", o0."priority", o0."attempted_at", o0."cancelled_at", o0."completed_at", o0."discarded_at", o0."inserted_at", o0."scheduled_at", o0."id" FROM "oban_jobs" AS o0 WHERE (o0."id" IN (?,?)) [202962, 202184] 13:20:56.783 [debug] QUERY OK source="settings" db=0.6ms queue=0.4ms idle=1.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:20:56.784 [info] Sent 200 in 9ms 13:20:56.784 [info] Sent 200 in 11ms 13:20:56.784 [debug] QUERY OK source="settings" db=0.4ms queue=0.2ms idle=1.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:20:56.784 [debug] QUERY OK source="media_profiles" db=0.7ms queue=0.3ms idle=0.9ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:20:56.785 [debug] QUERY OK source="settings" db=0.7ms idle=0.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:20:56.785 [debug] QUERY OK source="settings" db=0.5ms idle=1.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:20:56.786 [debug] QUERY OK source="media_profiles" db=0.4ms idle=1.2ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:20:56.786 [debug] QUERY OK source="tasks" db=0.8ms idle=1.4ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at" FROM "tasks" AS t0 INNER JOIN "oban_jobs" AS o1 ON o1."id" = t0."job_id" WHERE (t0."source_id" = ?) AND (o1."state" IN (?,?,?,?)) [16, "executing", "available", "scheduled", "retryable"] 13:20:56.786 [debug] QUERY OK source="settings" db=0.5ms queue=0.2ms idle=1.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:20:56.787 [debug] QUERY OK source="oban_jobs" db=0.7ms queue=0.1ms idle=1.6ms SELECT o0."id", o0."state", o0."queue", o0."worker", o0."args", o0."meta", o0."tags", o0."errors", o0."attempt", o0."attempted_by", o0."max_attempts", o0."priority", o0."attempted_at", o0."cancelled_at", o0."completed_at", o0."discarded_at", o0."inserted_at", o0."scheduled_at", o0."id" FROM "oban_jobs" AS o0 WHERE (o0."id" IN (?,?)) [202960, 202179] 13:20:56.787 [info] Sent 200 in 13ms 13:20:56.788 [debug] QUERY OK source="settings" db=0.3ms queue=0.1ms idle=2.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:20:56.789 [debug] QUERY OK source="settings" db=0.1ms idle=2.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:20:56.790 [debug] QUERY OK source="settings" db=0.2ms idle=3.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:20:56.790 [debug] QUERY OK source="sources" db=0.3ms idle=2.9ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [21] 13:20:56.792 [debug] QUERY OK source="sources" db=0.3ms idle=3.4ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [16] 13:20:56.794 [debug] QUERY OK source="media_items" db=3.0ms idle=3.2ms SELECT count(m0."id") FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [21] 13:20:56.794 [debug] QUERY OK source="media_items" db=1.5ms idle=3.7ms SELECT count(m0."id") FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [16] 13:20:56.797 [debug] QUERY OK source="media_items" db=2.0ms idle=4.7ms SELECT m0."id", m0."title", m0."uploaded_at", m0."prevent_download", m0."last_error" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) ORDER BY m0."uploaded_at" DESC LIMIT ? OFFSET ? [16, 10, 0] 13:20:56.797 [debug] QUERY OK source="media_items" db=3.2ms idle=4.2ms SELECT m0."id", m0."title", m0."uploaded_at", m0."prevent_download", m0."last_error" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) ORDER BY m0."uploaded_at" DESC LIMIT ? OFFSET ? [21, 10, 0] 13:20:56.798 [debug] QUERY OK source="sources" db=0.6ms idle=5.8ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [16] 13:20:56.799 [debug] QUERY OK source="sources" db=0.8ms idle=4.7ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [21] 13:20:56.801 [debug] QUERY OK source="media_items" db=1.2ms queue=0.1ms idle=2.8ms SELECT count(m0."id") FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND NOT (m0."media_filepath" IS NULL)) [21] 13:20:56.801 [debug] QUERY OK source="media_items" db=2.1ms queue=0.1ms idle=4.9ms SELECT count(m0."id") FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND NOT (m0."media_filepath" IS NULL)) [16] 13:20:56.803 [debug] QUERY OK source="media_items" db=1.2ms queue=0.2ms idle=3.8ms SELECT m0."id", m0."title", m0."uploaded_at", m0."prevent_download", m0."last_error" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND NOT (m0."media_filepath" IS NULL)) ORDER BY m0."uploaded_at" DESC LIMIT ? OFFSET ? [21, 10, 0] 13:20:56.804 [debug] QUERY OK source="media_items" db=1.9ms queue=0.1ms idle=3.2ms SELECT m0."id", m0."title", m0."uploaded_at", m0."prevent_download", m0."last_error" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND NOT (m0."media_filepath" IS NULL)) ORDER BY m0."uploaded_at" DESC LIMIT ? OFFSET ? [16, 10, 0] 13:20:56.805 [debug] QUERY OK source="sources" db=0.2ms idle=5.7ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [16] 13:20:56.806 [debug] QUERY OK source="sources" db=0.2ms idle=4.5ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [21] 13:20:56.807 [debug] QUERY OK source="media_items" db=1.0ms idle=4.6ms SELECT count(m0."id") FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds"))))) [16] 13:20:56.808 [debug] QUERY OK source="media_items" db=0.8ms idle=3.0ms SELECT m0."id", m0."title", m0."uploaded_at", m0."prevent_download", m0."last_error" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds"))))) ORDER BY m0."uploaded_at" DESC LIMIT ? OFFSET ? [16, 10, 0] 13:20:56.810 [debug] QUERY OK source="media_items" db=3.6ms idle=3.7ms SELECT count(m0."id") FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds"))))) [21] 13:20:56.812 [debug] QUERY OK source="media_items" db=1.7ms idle=4.9ms SELECT m0."id", m0."title", m0."uploaded_at", m0."prevent_download", m0."last_error" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds"))))) ORDER BY m0."uploaded_at" DESC LIMIT ? OFFSET ? [21, 10, 0] 13:20:56.813 [info] Sent 200 in 31ms 13:20:56.817 [info] Sent 200 in 44ms 13:20:56.941 [info] GET /sources/18/media/59095 13:20:56.941 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "59095", "source_id" => "18"} Pipelines: [:browser] 13:20:56.943 [debug] QUERY OK source="media_items" db=0.8ms queue=0.1ms idle=135.8ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [59095] 13:20:56.945 [debug] QUERY OK source="tasks" db=0.7ms queue=0.2ms idle=137.1ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [59095] 13:20:56.945 [debug] QUERY OK source="sources" db=0.9ms idle=136.4ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [18] 13:20:56.947 [debug] QUERY OK source="settings" db=0.6ms queue=0.1ms idle=136.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:20:56.948 [debug] QUERY OK source="settings" db=0.5ms queue=0.1ms idle=135.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:20:56.949 [debug] QUERY OK source="settings" db=0.3ms idle=5.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:20:56.951 [debug] QUERY OK source="media_profiles" db=0.3ms idle=5.7ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:20:56.954 [info] Sent 200 in 13ms 13:20:57.501 [debug] Current batch of media processed. Will check again in 1000ms 13:20:57.540 [info] GET /sources/6/media/58860/edit 13:20:57.541 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "58860", "source_id" => "6"} Pipelines: [:browser] 13:20:57.543 [debug] QUERY OK source="media_items" db=0.4ms queue=0.1ms idle=595.1ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [58860] 13:20:57.544 [debug] QUERY OK source="settings" db=0.3ms idle=595.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:20:57.545 [debug] QUERY OK source="settings" db=0.4ms idle=595.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:20:57.546 [debug] QUERY OK source="settings" db=0.3ms idle=595.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:20:57.549 [info] Sent 200 in 8ms 13:20:57.682 [info] GET /sources/16/media/10088 13:20:57.682 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "10088", "source_id" => "16"} Pipelines: [:browser] 13:20:57.684 [debug] QUERY OK source="media_items" db=0.4ms queue=0.1ms idle=354.6ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [10088] 13:20:57.685 [debug] QUERY OK source="tasks" db=0.3ms queue=0.1ms idle=142.4ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [10088] 13:20:57.686 [debug] QUERY OK source="sources" db=0.4ms idle=141.2ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [16] 13:20:57.687 [debug] QUERY OK source="settings" db=0.2ms idle=141.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:20:57.687 [debug] QUERY OK source="settings" db=0.2ms idle=140.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:20:57.688 [debug] QUERY OK source="settings" db=0.3ms idle=3.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:20:57.689 [debug] QUERY OK source="media_profiles" db=0.3ms idle=3.3ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:20:57.692 [info] Sent 200 in 9ms 13:20:57.832 [info] GET /sources/18/media/10424 13:20:57.832 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "10424", "source_id" => "18"} Pipelines: [:browser] 13:20:57.834 [debug] QUERY OK source="media_items" db=0.4ms idle=147.4ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [10424] 13:20:57.835 [debug] QUERY OK source="tasks" db=0.3ms queue=0.1ms idle=147.9ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [10424] 13:20:57.836 [debug] QUERY OK source="sources" db=0.8ms idle=147.6ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [18] 13:20:57.837 [debug] QUERY OK source="settings" db=0.4ms idle=148.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:20:57.838 [debug] QUERY OK source="settings" db=0.3ms idle=147.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:20:57.839 [debug] QUERY OK source="settings" db=0.4ms queue=0.1ms idle=4.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:20:57.842 [debug] QUERY OK source="media_profiles" db=0.5ms idle=5.8ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:20:57.865 [info] Sent 200 in 32ms 13:20:57.986 [info] GET /sources/3/media/54803/edit 13:20:57.987 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "54803", "source_id" => "3"} Pipelines: [:browser] 13:20:57.988 [debug] QUERY OK source="media_items" db=0.5ms queue=0.1ms idle=151.3ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [54803] 13:20:57.989 [debug] QUERY OK source="settings" db=0.2ms idle=151.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:20:57.989 [debug] QUERY OK source="settings" db=0.4ms idle=151.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:20:57.990 [debug] QUERY OK source="settings" db=0.2ms idle=151.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:20:57.992 [info] Sent 200 in 5ms 13:20:58.133 [info] GET /sources/16/media/10062 13:20:58.133 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "10062", "source_id" => "16"} Pipelines: [:browser] 13:20:58.135 [debug] QUERY OK source="media_items" db=0.5ms queue=0.1ms idle=292.4ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [10062] 13:20:58.136 [debug] QUERY OK source="tasks" db=0.4ms queue=0.2ms idle=148.0ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [10062] 13:20:58.137 [debug] QUERY OK source="sources" db=0.9ms idle=147.3ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [16] 13:20:58.138 [debug] QUERY OK source="settings" db=0.3ms idle=148.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:20:58.139 [debug] QUERY OK source="settings" db=0.3ms queue=0.1ms idle=148.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:20:58.140 [debug] QUERY OK source="settings" db=0.2ms idle=4.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:20:58.142 [debug] QUERY OK source="media_profiles" db=0.2ms idle=5.5ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:20:58.146 [info] Sent 200 in 12ms 13:20:58.503 [debug] Current batch of media processed. Will check again in 1000ms 13:20:59.504 [debug] Current batch of media processed. Will check again in 1000ms 13:21:00.146 [info] {"source":"oban","duration":761,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 13:21:00.505 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "✨This talk was recorded at ElixirConf EU 2025. If you're curious about our upcoming event, check https://elixirconf.eu ✨\n\nAbstract:\nLiveView revolutionized web development by enabling server-rendered, dynamic UI. Just as our applications grow in complexity, we often find ourselves needing more sophisticated client-side interactions. While LiveView excels at server-driven UI, managing complex client-side state can become challenging.\nThis talk explores how integrating a frontend library with LiveView offers the best of both worlds: LiveView's powerful server-side model combined with the rich ecosystem of modern frontend frameworks. Using LiveVue as a case study, we'll demonstrate practical patterns for managing client-state, leveraging existing frontend components, and maintaining a clean architecture. You'll learn when and how to introduce a frontend library to complement LiveView, not replace it.\n\nLet's keep in touch! Follow us on: \n💥 Bluesky: https://elixirconf.bsky.social\n💥 X: https://twitter.com/ElixirConfEU \n💥 Facebook: https://www.facebook.com/CodeSyncGlobal \n💥 LinkedIn: https://www.linkedin.com/company/code-sync\n💥 Mastodon: https://genserver.social/codesync", "duration" => 2340, "filename" => "/downloads/CodeSync/Season 2025/s2025e121100 - Why Combining LiveView and a Frontend Library is a Great Idea - Jakub Skałecki | ElixirConf EU 2025.mp4", "id" => "oouX5lxf48k", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=oouX5lxf48k", "playlist_index" => 5, "timestamp" => 1765441456, "title" => "Why Combining LiveView and a Frontend Library is a Great Idea - Jakub Skałecki | ElixirConf EU 2025", "upload_date" => "20251211"} 13:21:00.507 [debug] QUERY OK source="sources" db=0.9ms queue=0.2ms idle=693.2ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" IN (?)) [5] 13:21:00.509 [debug] QUERY OK source="sources" db=0.8ms queue=0.1ms idle=695.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [5] 13:21:00.527 [debug] QUERY OK source="media_items" db=17.4ms queue=0.1ms idle=696.5ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-12-11 08:24:16Z], 5] 13:21:00.533 [debug] QUERY OK source="media_items" db=4.7ms queue=0.1ms idle=381.3ms INSERT INTO "media_items" AS m0 ("description","title","uuid","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","prevent_download","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["✨This talk was recorded at ElixirConf EU 2025. If you're curious about our upcoming event, check https://elixirconf.eu ✨\n\nAbstract:\nLiveView revolutionized web development by enabling server-rendered, dynamic UI. Just as our applications grow in complexity, we often find ourselves needing more sophisticated client-side interactions. While LiveView excels at server-driven UI, managing complex client-side state can become challenging.\nThis talk explores how integrating a frontend library with LiveView offers the best of both worlds: LiveView's powerful server-side model combined with the rich ecosystem of modern frontend frameworks. Using LiveVue as a case study, we'll demonstrate practical patterns for managing client-state, leveraging existing frontend components, and maintaining a clean architecture. You'll learn when and how to introduce a frontend library to complement LiveView, not replace it.\n\nLet's keep in touch! Follow us on: \n💥 Bluesky: https://elixirconf.bsky.social\n💥 X: https://twitter.com/ElixirConfEU \n💥 Facebook: https://www.facebook.com/CodeSyncGlobal \n💥 LinkedIn: https://www.linkedin.com/company/code-sync\n💥 Mastodon: https://genserver.social/codesync", "Why Combining LiveView and a Frontend Library is a Great Idea - Jakub Skałecki | ElixirConf EU 2025", "93df25e6-c73f-40e9-9ad5-9c490f9084b5", 2340, false, "oouX5lxf48k", "https://www.youtube.com/watch?v=oouX5lxf48k", 5, "/downloads/CodeSync/Season 2025/s2025e121100 - Why Combining LiveView and a Frontend Library is a Great Idea - Jakub Skałecki | ElixirConf EU 2025.mp4", false, false, false, 5, [], 98, ~U[2025-12-11 08:24:16Z], ~U[2026-01-03 02:21:00Z], ~U[2026-01-03 02:21:00Z], "✨This talk was recorded at ElixirConf EU 2025. If you're curious about our upcoming event, check https://elixirconf.eu ✨\n\nAbstract:\nLiveView revolutionized web development by enabling server-rendered, dynamic UI. Just as our applications grow in complexity, we often find ourselves needing more sophisticated client-side interactions. While LiveView excels at server-driven UI, managing complex client-side state can become challenging.\nThis talk explores how integrating a frontend library with LiveView offers the best of both worlds: LiveView's powerful server-side model combined with the rich ecosystem of modern frontend frameworks. Using LiveVue as a case study, we'll demonstrate practical patterns for managing client-state, leveraging existing frontend components, and maintaining a clean architecture. You'll learn when and how to introduce a frontend library to complement LiveView, not replace it.\n\nLet's keep in touch! Follow us on: \n💥 Bluesky: https://elixirconf.bsky.social\n💥 X: https://twitter.com/ElixirConfEU \n💥 Facebook: https://www.facebook.com/CodeSyncGlobal \n💥 LinkedIn: https://www.linkedin.com/company/code-sync\n💥 Mastodon: https://genserver.social/codesync", "Why Combining LiveView and a Frontend Library is a Great Idea - Jakub Skałecki | ElixirConf EU 2025", 2340, false, "oouX5lxf48k", "https://www.youtube.com/watch?v=oouX5lxf48k", "/downloads/CodeSync/Season 2025/s2025e121100 - Why Combining LiveView and a Frontend Library is a Great Idea - Jakub Skałecki | ElixirConf EU 2025.mp4", false, 5, ~U[2025-12-11 08:24:16Z]] 13:21:00.535 [debug] QUERY OK source="sources" db=1.2ms queue=0.1ms idle=194.2ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [5] 13:21:00.537 [debug] QUERY OK source="media_profiles" db=1.0ms queue=0.2ms idle=28.5ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:21:00.539 [debug] QUERY OK source="media_items" db=1.0ms queue=0.2ms idle=28.6ms SELECT 1 FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) LIMIT 1 [58557] 13:21:00.539 [debug] Current batch of media processed. Will check again in 1000ms 13:21:01.540 [debug] Current batch of media processed. Will check again in 1000ms 13:21:02.541 [debug] Current batch of media processed. Will check again in 1000ms 13:21:03.541 [debug] Current batch of media processed. Will check again in 1000ms 13:21:04.378 [info] GET /sources/11/media/58657 13:21:04.379 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "58657", "source_id" => "11"} Pipelines: [:browser] 13:21:04.381 [debug] QUERY OK source="media_items" db=1.0ms queue=0.1ms idle=566.6ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [58657] 13:21:04.383 [debug] QUERY OK source="tasks" db=1.4ms queue=0.2ms idle=568.8ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [58657] 13:21:04.384 [debug] QUERY OK source="sources" db=1.6ms idle=569.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [11] 13:21:04.384 [debug] QUERY OK source="oban_jobs" db=0.3ms idle=571.2ms SELECT o0."id", o0."state", o0."queue", o0."worker", o0."args", o0."meta", o0."tags", o0."errors", o0."attempt", o0."attempted_by", o0."max_attempts", o0."priority", o0."attempted_at", o0."cancelled_at", o0."completed_at", o0."discarded_at", o0."inserted_at", o0."scheduled_at", o0."id" FROM "oban_jobs" AS o0 WHERE (o0."id" = ?) [202019] 13:21:04.386 [debug] QUERY OK source="settings" db=0.3ms queue=0.2ms idle=30.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:21:04.386 [debug] QUERY OK source="settings" db=0.5ms idle=5.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:21:04.388 [debug] QUERY OK source="settings" db=0.2ms idle=4.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:21:04.390 [debug] QUERY OK source="media_profiles" db=0.2ms idle=5.8ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:21:04.414 [info] Sent 200 in 35ms 13:21:04.542 [debug] Current batch of media processed. Will check again in 1000ms 13:21:05.545 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "✨ This talk was recorded at Lambda Days in June 2025. If you're curious about our upcoming event, check https://lambdadays.org ✨\n\nScala and TypeScript Synergy: Developing a real-time collaborative text editor\n\nHave you ever wondered what it takes to combine the power of Scala with the flexibility of TypeScript to create a secure, real-time collaborative text editor—similar to Google Docs, but built for high-security environments? Imagine a scenario where military teams need to simultaneously update critical text documents during a mission while ensuring airtight security in air-gapped deployments.\n\nIn this presentation, I will demonstrate how we leveraged the strengths of Scala and TypeScript to develop a collaborative text editor that meets the strictest standards for security, performance, and real-time collaboration. I will dive deep into the technical architecture, powered by advanced operational transformation algorithms, which enables multi-user editing without conflicts. Additionally, I'll share how we layered robust security measures on top of the solution to ensure it meets military-grade standards while maintaining seamless performance in isolated networks.\n\nLet's keep in touch! Follow us on: \n💥BlueSky: https://bsky.app/profile/lambdadays.bsky.social\n💥LinkedIn: https://www.linkedin.com/company/lambda-days \n💥Facebook: https://www.facebook.com/lambdadays \n💥Mastodon: https://genserver.social/codesync \n💥Twitter: https://twitter.com/LambdaDays", "duration" => 2791, "filename" => "/downloads/CodeSync/Season 2025/s2025e120900 - Scala and TypeScript Synergy: Developing a (...) text editor - Mihaela Gheorghe-Roman | LambdaDays25.mp4", "id" => "dLTPYHSGxYk", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=dLTPYHSGxYk", "playlist_index" => 6, "timestamp" => 1765289432, "title" => "Scala and TypeScript Synergy: Developing a (...) text editor - Mihaela Gheorghe-Roman | LambdaDays25", "upload_date" => "20251209"} 13:21:05.546 [debug] QUERY OK source="sources" db=0.8ms queue=0.1ms idle=1159.5ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" IN (?)) [5] 13:21:05.548 [debug] QUERY OK source="sources" db=0.9ms queue=0.1ms idle=1160.3ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [5] 13:21:05.568 [debug] QUERY OK source="media_items" db=19.3ms queue=0.1ms idle=1160.4ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-12-09 14:10:32Z], 5] 13:21:05.578 [debug] QUERY OK source="media_items" db=8.5ms queue=0.1ms idle=1178.9ms INSERT INTO "media_items" AS m0 ("description","title","uuid","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","prevent_download","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["✨ This talk was recorded at Lambda Days in June 2025. If you're curious about our upcoming event, check https://lambdadays.org ✨\n\nScala and TypeScript Synergy: Developing a real-time collaborative text editor\n\nHave you ever wondered what it takes to combine the power of Scala with the flexibility of TypeScript to create a secure, real-time collaborative text editor—similar to Google Docs, but built for high-security environments? Imagine a scenario where military teams need to simultaneously update critical text documents during a mission while ensuring airtight security in air-gapped deployments.\n\nIn this presentation, I will demonstrate how we leveraged the strengths of Scala and TypeScript to develop a collaborative text editor that meets the strictest standards for security, performance, and real-time collaboration. I will dive deep into the technical architecture, powered by advanced operational transformation algorithms, which enables multi-user editing without conflicts. Additionally, I'll share how we layered robust security measures on top of the solution to ensure it meets military-grade standards while maintaining seamless performance in isolated networks.\n\nLet's keep in touch! Follow us on: \n💥BlueSky: https://bsky.app/profile/lambdadays.bsky.social\n💥LinkedIn: https://www.linkedin.com/company/lambda-days \n💥Facebook: https://www.facebook.com/lambdadays \n💥Mastodon: https://genserver.social/codesync \n💥Twitter: https://twitter.com/LambdaDays", "Scala and TypeScript Synergy: Developing a (...) text editor - Mihaela Gheorghe-Roman | LambdaDays25", "d044ff40-171f-4523-ab1d-8600a85214db", 2791, false, "dLTPYHSGxYk", "https://www.youtube.com/watch?v=dLTPYHSGxYk", 6, "/downloads/CodeSync/Season 2025/s2025e120900 - Scala and TypeScript Synergy: Developing a (...) text editor - Mihaela Gheorghe-Roman | LambdaDays25.mp4", false, false, false, 5, [], 63, ~U[2025-12-09 14:10:32Z], ~U[2026-01-03 02:21:05Z], ~U[2026-01-03 02:21:05Z], "✨ This talk was recorded at Lambda Days in June 2025. If you're curious about our upcoming event, check https://lambdadays.org ✨\n\nScala and TypeScript Synergy: Developing a real-time collaborative text editor\n\nHave you ever wondered what it takes to combine the power of Scala with the flexibility of TypeScript to create a secure, real-time collaborative text editor—similar to Google Docs, but built for high-security environments? Imagine a scenario where military teams need to simultaneously update critical text documents during a mission while ensuring airtight security in air-gapped deployments.\n\nIn this presentation, I will demonstrate how we leveraged the strengths of Scala and TypeScript to develop a collaborative text editor that meets the strictest standards for security, performance, and real-time collaboration. I will dive deep into the technical architecture, powered by advanced operational transformation algorithms, which enables multi-user editing without conflicts. Additionally, I'll share how we layered robust security measures on top of the solution to ensure it meets military-grade standards while maintaining seamless performance in isolated networks.\n\nLet's keep in touch! Follow us on: \n💥BlueSky: https://bsky.app/profile/lambdadays.bsky.social\n💥LinkedIn: https://www.linkedin.com/company/lambda-days \n💥Facebook: https://www.facebook.com/lambdadays \n💥Mastodon: https://genserver.social/codesync \n💥Twitter: https://twitter.com/LambdaDays", "Scala and TypeScript Synergy: Developing a (...) text editor - Mihaela Gheorghe-Roman | LambdaDays25", 2791, false, "dLTPYHSGxYk", "https://www.youtube.com/watch?v=dLTPYHSGxYk", "/downloads/CodeSync/Season 2025/s2025e120900 - Scala and TypeScript Synergy: Developing a (...) text editor - Mihaela Gheorghe-Roman | LambdaDays25.mp4", false, 5, ~U[2025-12-09 14:10:32Z]] 13:21:05.580 [debug] QUERY OK source="sources" db=0.6ms queue=0.1ms idle=221.3ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [5] 13:21:05.581 [debug] QUERY OK source="media_profiles" db=0.8ms queue=0.1ms idle=33.8ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:21:05.582 [debug] QUERY OK source="media_items" db=0.4ms queue=0.1ms idle=33.8ms SELECT 1 FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) LIMIT 1 [58561] 13:21:05.583 [debug] Current batch of media processed. Will check again in 1000ms 13:21:06.583 [debug] Current batch of media processed. Will check again in 1000ms 13:21:07.585 [debug] Current batch of media processed. Will check again in 1000ms 13:21:08.586 [debug] Current batch of media processed. Will check again in 1000ms 13:21:09.589 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "✨ This talk was recorded at Lambda Days in June 2025. If you're curious about our upcoming event, check https://lambdadays.org ✨\n\nAutomating Type-Driven Development with (Co)algebras\n\nTypes matter not only for preventing runtime errors but also for guiding implementation. In some cases, they even provide enough information to automatically derive fully verified code from the signature. This derivation proceeds by pure logical reasoning —no need for LLMs here!— in accordance with the well-known Curry-Howard correspondence. This talk will explore this logical process through the lens of recursion schemes. Specifically, the search space for proofs unfolds from the initial proof sequent, while term extraction emerges from folding over the proof tree. For finite search spaces, hylomorphisms offer a brute-force algorithm, while other algorithms require specialized traversals of the search space. Finally, we will outline how to exploit Scala 3 macros and the tagless-final approach to bring these (co)algebraic techniques into practice!\n\nLet's keep in touch! Follow us on: \n💥BlueSky: https://bsky.app/profile/lambdadays.bsky.social\n💥LinkedIn: https://www.linkedin.com/company/lambda-days \n💥Facebook: https://www.facebook.com/lambdadays \n💥Mastodon: https://genserver.social/codesync \n💥Twitter: https://twitter.com/LambdaDays", "duration" => 1358, "filename" => "/downloads/CodeSync/Season 2025/s2025e120900 - Automating Type-Driven Development with (Co)algebras - Juan Manuel Serrano Hidalgo | Lambda Days 25.mp4", "id" => "7F9tH8T4TC4", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=7F9tH8T4TC4", "playlist_index" => 7, "timestamp" => 1765289366, "title" => "Automating Type-Driven Development with (Co)algebras - Juan Manuel Serrano Hidalgo | Lambda Days 25", "upload_date" => "20251209"} 13:21:09.590 [debug] QUERY OK source="sources" db=0.5ms queue=0.2ms idle=776.8ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" IN (?)) [5] 13:21:09.592 [debug] QUERY OK source="sources" db=0.6ms queue=0.3ms idle=778.2ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [5] 13:21:09.611 [debug] QUERY OK source="media_items" db=17.9ms queue=0.1ms idle=779.6ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-12-09 14:09:26Z], 5] 13:21:09.619 [debug] QUERY OK source="media_items" db=5.2ms queue=0.1ms idle=798.8ms INSERT INTO "media_items" AS m0 ("description","title","uuid","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","prevent_download","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["✨ This talk was recorded at Lambda Days in June 2025. If you're curious about our upcoming event, check https://lambdadays.org ✨\n\nAutomating Type-Driven Development with (Co)algebras\n\nTypes matter not only for preventing runtime errors but also for guiding implementation. In some cases, they even provide enough information to automatically derive fully verified code from the signature. This derivation proceeds by pure logical reasoning —no need for LLMs here!— in accordance with the well-known Curry-Howard correspondence. This talk will explore this logical process through the lens of recursion schemes. Specifically, the search space for proofs unfolds from the initial proof sequent, while term extraction emerges from folding over the proof tree. For finite search spaces, hylomorphisms offer a brute-force algorithm, while other algorithms require specialized traversals of the search space. Finally, we will outline how to exploit Scala 3 macros and the tagless-final approach to bring these (co)algebraic techniques into practice!\n\nLet's keep in touch! Follow us on: \n💥BlueSky: https://bsky.app/profile/lambdadays.bsky.social\n💥LinkedIn: https://www.linkedin.com/company/lambda-days \n💥Facebook: https://www.facebook.com/lambdadays \n💥Mastodon: https://genserver.social/codesync \n💥Twitter: https://twitter.com/LambdaDays", "Automating Type-Driven Development with (Co)algebras - Juan Manuel Serrano Hidalgo | Lambda Days 25", "013d21a0-ddfd-4d28-8878-f1c00c772e2a", 1358, false, "7F9tH8T4TC4", "https://www.youtube.com/watch?v=7F9tH8T4TC4", 7, "/downloads/CodeSync/Season 2025/s2025e120900 - Automating Type-Driven Development with (Co)algebras - Juan Manuel Serrano Hidalgo | Lambda Days 25.mp4", false, false, false, 5, [], 63, ~U[2025-12-09 14:09:26Z], ~U[2026-01-03 02:21:09Z], ~U[2026-01-03 02:21:09Z], "✨ This talk was recorded at Lambda Days in June 2025. If you're curious about our upcoming event, check https://lambdadays.org ✨\n\nAutomating Type-Driven Development with (Co)algebras\n\nTypes matter not only for preventing runtime errors but also for guiding implementation. In some cases, they even provide enough information to automatically derive fully verified code from the signature. This derivation proceeds by pure logical reasoning —no need for LLMs here!— in accordance with the well-known Curry-Howard correspondence. This talk will explore this logical process through the lens of recursion schemes. Specifically, the search space for proofs unfolds from the initial proof sequent, while term extraction emerges from folding over the proof tree. For finite search spaces, hylomorphisms offer a brute-force algorithm, while other algorithms require specialized traversals of the search space. Finally, we will outline how to exploit Scala 3 macros and the tagless-final approach to bring these (co)algebraic techniques into practice!\n\nLet's keep in touch! Follow us on: \n💥BlueSky: https://bsky.app/profile/lambdadays.bsky.social\n💥LinkedIn: https://www.linkedin.com/company/lambda-days \n💥Facebook: https://www.facebook.com/lambdadays \n💥Mastodon: https://genserver.social/codesync \n💥Twitter: https://twitter.com/LambdaDays", "Automating Type-Driven Development with (Co)algebras - Juan Manuel Serrano Hidalgo | Lambda Days 25", 1358, false, "7F9tH8T4TC4", "https://www.youtube.com/watch?v=7F9tH8T4TC4", "/downloads/CodeSync/Season 2025/s2025e120900 - Automating Type-Driven Development with (Co)algebras - Juan Manuel Serrano Hidalgo | Lambda Days 25.mp4", false, 5, ~U[2025-12-09 14:09:26Z]] 13:21:09.621 [debug] QUERY OK source="sources" db=1.0ms queue=0.1ms idle=250.2ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [5] 13:21:09.622 [debug] QUERY OK source="media_profiles" db=0.8ms queue=0.1ms idle=30.8ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:21:09.623 [debug] QUERY OK source="media_items" db=0.4ms queue=0.1ms idle=30.7ms SELECT 1 FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) LIMIT 1 [58563] 13:21:09.624 [debug] Current batch of media processed. Will check again in 1000ms 13:21:10.625 [debug] Current batch of media processed. Will check again in 1000ms 13:21:11.626 [debug] Current batch of media processed. Will check again in 1000ms 13:21:12.627 [debug] Current batch of media processed. Will check again in 1000ms 13:21:12.627 [info] {"source":"oban","duration":2259,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:21:13.628 [debug] Current batch of media processed. Will check again in 1000ms 13:21:14.629 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "✨ This talk was recorded at Lambda Days in June 2025. If you're curious about our upcoming event, check https://lambdadays.org ✨\n\nPanel discussion: Learning How to Learn\nFour friends, brought together by Lambda Days, reunited at conferences across Europe and the U.S., share their stories of learning, teaching, and growing in functional programming. With diverse backgrounds - formal education, self-taught, and mentorship - they explore how different paths shape how we code, collaborate, and teach others. Join us for a lively conversation full of insights, practical tips, and reflections on building skills, friendships, and inclusive learning spaces in the functional programming community.\n\nLet's keep in touch! Follow us on: \n💥BlueSky: https://bsky.app/profile/lambdadays.bsky.social\n💥LinkedIn: https://www.linkedin.com/company/lambda-days \n💥Facebook: https://www.facebook.com/lambdadays \n💥Mastodon: https://genserver.social/codesync \n💥Twitter: https://twitter.com/LambdaDays", "duration" => 2351, "filename" => "/downloads/CodeSync/Season 2025/s2025e120900 - Learning How to Learn - Carol Silva, Jordan Miller, Kimberley Huizing & Wendy Randolph |LambdaDays25.mp4", "id" => "6Oj2zkQ5XX8", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=6Oj2zkQ5XX8", "playlist_index" => 8, "timestamp" => 1765289308, "title" => "Learning How to Learn - Carol Silva, Jordan Miller, Kimberley Huizing & Wendy Randolph |LambdaDays25", "upload_date" => "20251209"} 13:21:14.631 [debug] QUERY OK source="sources" db=0.9ms queue=0.2ms idle=1817.4ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" IN (?)) [5] 13:21:14.633 [debug] QUERY OK source="sources" db=0.6ms queue=0.1ms idle=1819.5ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [5] 13:21:14.651 [debug] QUERY OK source="media_items" db=17.5ms queue=0.2ms idle=1252.2ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-12-09 14:08:28Z], 5] 13:21:14.657 [debug] QUERY OK source="media_items" db=4.2ms queue=0.1ms idle=839.6ms INSERT INTO "media_items" AS m0 ("description","title","uuid","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","prevent_download","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["✨ This talk was recorded at Lambda Days in June 2025. If you're curious about our upcoming event, check https://lambdadays.org ✨\n\nPanel discussion: Learning How to Learn\nFour friends, brought together by Lambda Days, reunited at conferences across Europe and the U.S., share their stories of learning, teaching, and growing in functional programming. With diverse backgrounds - formal education, self-taught, and mentorship - they explore how different paths shape how we code, collaborate, and teach others. Join us for a lively conversation full of insights, practical tips, and reflections on building skills, friendships, and inclusive learning spaces in the functional programming community.\n\nLet's keep in touch! Follow us on: \n💥BlueSky: https://bsky.app/profile/lambdadays.bsky.social\n💥LinkedIn: https://www.linkedin.com/company/lambda-days \n💥Facebook: https://www.facebook.com/lambdadays \n💥Mastodon: https://genserver.social/codesync \n💥Twitter: https://twitter.com/LambdaDays", "Learning How to Learn - Carol Silva, Jordan Miller, Kimberley Huizing & Wendy Randolph |LambdaDays25", "3733f4b8-a8c8-458b-8499-106e1f3e0720", 2351, false, "6Oj2zkQ5XX8", "https://www.youtube.com/watch?v=6Oj2zkQ5XX8", 8, "/downloads/CodeSync/Season 2025/s2025e120900 - Learning How to Learn - Carol Silva, Jordan Miller, Kimberley Huizing & Wendy Randolph |LambdaDays25.mp4", false, false, false, 5, [], 63, ~U[2025-12-09 14:08:28Z], ~U[2026-01-03 02:21:14Z], ~U[2026-01-03 02:21:14Z], "✨ This talk was recorded at Lambda Days in June 2025. If you're curious about our upcoming event, check https://lambdadays.org ✨\n\nPanel discussion: Learning How to Learn\nFour friends, brought together by Lambda Days, reunited at conferences across Europe and the U.S., share their stories of learning, teaching, and growing in functional programming. With diverse backgrounds - formal education, self-taught, and mentorship - they explore how different paths shape how we code, collaborate, and teach others. Join us for a lively conversation full of insights, practical tips, and reflections on building skills, friendships, and inclusive learning spaces in the functional programming community.\n\nLet's keep in touch! Follow us on: \n💥BlueSky: https://bsky.app/profile/lambdadays.bsky.social\n💥LinkedIn: https://www.linkedin.com/company/lambda-days \n💥Facebook: https://www.facebook.com/lambdadays \n💥Mastodon: https://genserver.social/codesync \n💥Twitter: https://twitter.com/LambdaDays", "Learning How to Learn - Carol Silva, Jordan Miller, Kimberley Huizing & Wendy Randolph |LambdaDays25", 2351, false, "6Oj2zkQ5XX8", "https://www.youtube.com/watch?v=6Oj2zkQ5XX8", "/downloads/CodeSync/Season 2025/s2025e120900 - Learning How to Learn - Carol Silva, Jordan Miller, Kimberley Huizing & Wendy Randolph |LambdaDays25.mp4", false, 5, ~U[2025-12-09 14:08:28Z]] 13:21:14.659 [debug] QUERY OK source="sources" db=0.7ms queue=0.1ms idle=273.3ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [5] 13:21:14.660 [debug] QUERY OK source="media_profiles" db=0.5ms queue=0.1ms idle=27.8ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:21:14.661 [debug] QUERY OK source="media_items" db=0.9ms queue=0.1ms idle=27.2ms SELECT 1 FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) LIMIT 1 [58567] 13:21:14.662 [debug] Current batch of media processed. Will check again in 1000ms 13:21:15.663 [debug] Current batch of media processed. Will check again in 1000ms 13:21:16.663 [debug] Current batch of media processed. Will check again in 1000ms 13:21:17.665 [debug] Current batch of media processed. Will check again in 1000ms 13:21:18.666 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "✨ This talk was recorded at Lambda Days in June 2025. If you're curious about our upcoming event, check https://lambdadays.org ✨\n\nFrom Clojure to Elixir: Leveraging Functional Programming for Scalable, Sustainable Web Apps\n\nClojure and Elixir each offer unique approaches to building scalable web apps. I’ll walk you through the benefits and trials of using Clojure and then Elixir to build the exact same web app. Clojure offers flexibility but requires careful stack decisions, while Elixir’s Phoenix framework offers an opinionated, plug-and-play experience. After walking through both applications, you’ll get a better idea of which one appeals to you more.\n\nLet's keep in touch! Follow us on: \n💥BlueSky: https://bsky.app/profile/lambdadays.bsky.social\n💥LinkedIn: https://www.linkedin.com/company/lambda-days \n💥Facebook: https://www.facebook.com/lambdadays \n💥Mastodon: https://genserver.social/codesync \n💥Twitter: https://twitter.com/LambdaDays", "duration" => 958, "filename" => "/downloads/CodeSync/Season 2025/s2025e120900 - Leveraging Functional Programming for Scalable, Sustainable Web Apps- Wendy Randolph |Lambda Days 25.mp4", "id" => "-Dhv8yx30Fw", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=-Dhv8yx30Fw", "playlist_index" => 9, "timestamp" => 1765289046, "title" => "Leveraging Functional Programming for Scalable, Sustainable Web Apps- Wendy Randolph |Lambda Days 25", "upload_date" => "20251209"} 13:21:18.667 [debug] QUERY OK source="sources" db=0.3ms queue=0.1ms idle=853.7ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" IN (?)) [5] 13:21:18.667 [debug] QUERY OK source="sources" db=0.3ms queue=0.1ms idle=854.5ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [5] 13:21:18.677 [debug] QUERY OK source="media_items" db=8.7ms idle=855.2ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-12-09 14:04:06Z], 5] 13:21:18.680 [debug] QUERY OK source="media_items" db=2.1ms idle=864.6ms INSERT INTO "media_items" AS m0 ("description","title","uuid","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","prevent_download","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["✨ This talk was recorded at Lambda Days in June 2025. If you're curious about our upcoming event, check https://lambdadays.org ✨\n\nFrom Clojure to Elixir: Leveraging Functional Programming for Scalable, Sustainable Web Apps\n\nClojure and Elixir each offer unique approaches to building scalable web apps. I’ll walk you through the benefits and trials of using Clojure and then Elixir to build the exact same web app. Clojure offers flexibility but requires careful stack decisions, while Elixir’s Phoenix framework offers an opinionated, plug-and-play experience. After walking through both applications, you’ll get a better idea of which one appeals to you more.\n\nLet's keep in touch! Follow us on: \n💥BlueSky: https://bsky.app/profile/lambdadays.bsky.social\n💥LinkedIn: https://www.linkedin.com/company/lambda-days \n💥Facebook: https://www.facebook.com/lambdadays \n💥Mastodon: https://genserver.social/codesync \n💥Twitter: https://twitter.com/LambdaDays", "Leveraging Functional Programming for Scalable, Sustainable Web Apps- Wendy Randolph |Lambda Days 25", "d151f758-e8f4-454b-af0e-8d68f93d1b2e", 958, false, "-Dhv8yx30Fw", "https://www.youtube.com/watch?v=-Dhv8yx30Fw", 9, "/downloads/CodeSync/Season 2025/s2025e120900 - Leveraging Functional Programming for Scalable, Sustainable Web Apps- Wendy Randolph |Lambda Days 25.mp4", false, false, false, 5, [], 63, ~U[2025-12-09 14:04:06Z], ~U[2026-01-03 02:21:18Z], ~U[2026-01-03 02:21:18Z], "✨ This talk was recorded at Lambda Days in June 2025. If you're curious about our upcoming event, check https://lambdadays.org ✨\n\nFrom Clojure to Elixir: Leveraging Functional Programming for Scalable, Sustainable Web Apps\n\nClojure and Elixir each offer unique approaches to building scalable web apps. I’ll walk you through the benefits and trials of using Clojure and then Elixir to build the exact same web app. Clojure offers flexibility but requires careful stack decisions, while Elixir’s Phoenix framework offers an opinionated, plug-and-play experience. After walking through both applications, you’ll get a better idea of which one appeals to you more.\n\nLet's keep in touch! Follow us on: \n💥BlueSky: https://bsky.app/profile/lambdadays.bsky.social\n💥LinkedIn: https://www.linkedin.com/company/lambda-days \n💥Facebook: https://www.facebook.com/lambdadays \n💥Mastodon: https://genserver.social/codesync \n💥Twitter: https://twitter.com/LambdaDays", "Leveraging Functional Programming for Scalable, Sustainable Web Apps- Wendy Randolph |Lambda Days 25", 958, false, "-Dhv8yx30Fw", "https://www.youtube.com/watch?v=-Dhv8yx30Fw", "/downloads/CodeSync/Season 2025/s2025e120900 - Leveraging Functional Programming for Scalable, Sustainable Web Apps- Wendy Randolph |Lambda Days 25.mp4", false, 5, ~U[2025-12-09 14:04:06Z]] 13:21:18.680 [debug] QUERY OK source="sources" db=0.3ms idle=281.5ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [5] 13:21:18.681 [debug] QUERY OK source="media_profiles" db=0.4ms idle=14.0ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:21:18.682 [debug] QUERY OK source="media_items" db=0.3ms idle=14.1ms SELECT 1 FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) LIMIT 1 [58570] 13:21:18.682 [debug] Current batch of media processed. Will check again in 1000ms 13:21:19.684 [debug] Current batch of media processed. Will check again in 1000ms 13:21:20.685 [debug] Current batch of media processed. Will check again in 1000ms 13:21:21.685 [debug] Current batch of media processed. Will check again in 1000ms 13:21:22.687 [debug] Current batch of media processed. Will check again in 1000ms 13:21:23.688 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "✨ This talk was recorded at Lambda Days in June 2025. If you're curious about our upcoming event, check https://lambdadays.org ✨\n\nGoing functional and immutable: Refactoring solution with 30k+ loc from C# to F#\n\nOur employee roster scheduling optimization solution was gradually built in C# based on the needs of particular customers. The whole data processing and optimization procedure resembles a functional pipeline, therefore F# was introduced as natural choice for some parts. After 10 years of development the solution reached a point of C#-F# interop mess and it was time to tidy it up.\n\nIn my talk I'll guide you through our process of eliminating side-effect bugs by transition to data representation interface implemented by F# immutable records while relying on unit tests based on real production scenarios.\n\nLet's keep in touch! Follow us on: \n💥BlueSky: https://bsky.app/profile/lambdadays.bsky.social\n💥LinkedIn: https://www.linkedin.com/company/lambda-days \n💥Facebook: https://www.facebook.com/lambdadays \n💥Mastodon: https://genserver.social/codesync \n💥Twitter: https://twitter.com/LambdaDays", "duration" => 1158, "filename" => "/downloads/CodeSync/Season 2025/s2025e120900 - Going functional and immutable: Refactoring solution (...) from C# to F# -Daniel Ondus |LambdaDays25.mp4", "id" => "GQ3pvhhewEM", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=GQ3pvhhewEM", "playlist_index" => 10, "timestamp" => 1765289017, "title" => "Going functional and immutable: Refactoring solution (...) from C# to F# -Daniel Ondus |LambdaDays25", "upload_date" => "20251209"} 13:21:23.689 [debug] QUERY OK source="sources" db=0.5ms idle=1875.9ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" IN (?)) [5] 13:21:23.690 [debug] QUERY OK source="sources" db=0.4ms idle=1876.8ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [5] 13:21:23.701 [debug] QUERY OK source="media_items" db=10.4ms idle=1877.5ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-12-09 14:03:37Z], 5] 13:21:23.704 [debug] QUERY OK source="media_items" db=2.1ms idle=1289.0ms INSERT INTO "media_items" AS m0 ("description","title","uuid","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","prevent_download","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["✨ This talk was recorded at Lambda Days in June 2025. If you're curious about our upcoming event, check https://lambdadays.org ✨\n\nGoing functional and immutable: Refactoring solution with 30k+ loc from C# to F#\n\nOur employee roster scheduling optimization solution was gradually built in C# based on the needs of particular customers. The whole data processing and optimization procedure resembles a functional pipeline, therefore F# was introduced as natural choice for some parts. After 10 years of development the solution reached a point of C#-F# interop mess and it was time to tidy it up.\n\nIn my talk I'll guide you through our process of eliminating side-effect bugs by transition to data representation interface implemented by F# immutable records while relying on unit tests based on real production scenarios.\n\nLet's keep in touch! Follow us on: \n💥BlueSky: https://bsky.app/profile/lambdadays.bsky.social\n💥LinkedIn: https://www.linkedin.com/company/lambda-days \n💥Facebook: https://www.facebook.com/lambdadays \n💥Mastodon: https://genserver.social/codesync \n💥Twitter: https://twitter.com/LambdaDays", "Going functional and immutable: Refactoring solution (...) from C# to F# -Daniel Ondus |LambdaDays25", "829b6809-ad6f-433a-a925-5bb762fa24d2", 1158, false, "GQ3pvhhewEM", "https://www.youtube.com/watch?v=GQ3pvhhewEM", 10, "/downloads/CodeSync/Season 2025/s2025e120900 - Going functional and immutable: Refactoring solution (...) from C# to F# -Daniel Ondus |LambdaDays25.mp4", false, false, false, 5, [], 63, ~U[2025-12-09 14:03:37Z], ~U[2026-01-03 02:21:23Z], ~U[2026-01-03 02:21:23Z], "✨ This talk was recorded at Lambda Days in June 2025. If you're curious about our upcoming event, check https://lambdadays.org ✨\n\nGoing functional and immutable: Refactoring solution with 30k+ loc from C# to F#\n\nOur employee roster scheduling optimization solution was gradually built in C# based on the needs of particular customers. The whole data processing and optimization procedure resembles a functional pipeline, therefore F# was introduced as natural choice for some parts. After 10 years of development the solution reached a point of C#-F# interop mess and it was time to tidy it up.\n\nIn my talk I'll guide you through our process of eliminating side-effect bugs by transition to data representation interface implemented by F# immutable records while relying on unit tests based on real production scenarios.\n\nLet's keep in touch! Follow us on: \n💥BlueSky: https://bsky.app/profile/lambdadays.bsky.social\n💥LinkedIn: https://www.linkedin.com/company/lambda-days \n💥Facebook: https://www.facebook.com/lambdadays \n💥Mastodon: https://genserver.social/codesync \n💥Twitter: https://twitter.com/LambdaDays", "Going functional and immutable: Refactoring solution (...) from C# to F# -Daniel Ondus |LambdaDays25", 1158, false, "GQ3pvhhewEM", "https://www.youtube.com/watch?v=GQ3pvhhewEM", "/downloads/CodeSync/Season 2025/s2025e120900 - Going functional and immutable: Refactoring solution (...) from C# to F# -Daniel Ondus |LambdaDays25.mp4", false, 5, ~U[2025-12-09 14:03:37Z]] 13:21:23.704 [debug] QUERY OK source="sources" db=0.3ms idle=289.7ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [5] 13:21:23.705 [debug] QUERY OK source="media_profiles" db=0.3ms idle=15.3ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:21:23.706 [debug] QUERY OK source="media_items" db=0.4ms idle=15.2ms SELECT 1 FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) LIMIT 1 [58572] 13:21:23.706 [debug] Current batch of media processed. Will check again in 1000ms 13:21:24.706 [debug] Current batch of media processed. Will check again in 1000ms 13:21:25.708 [debug] Current batch of media processed. Will check again in 1000ms 13:21:26.709 [debug] Current batch of media processed. Will check again in 1000ms 13:21:27.710 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "✨ This talk was recorded at Lambda Days in June 2025. If you're curious about our upcoming event, check https://lambdadays.org ✨\n\nLocal-First App Development with Event Sourcing: A Functional Approach in Kotlin\n\nIn an increasingly connected world, applications often rely on constant internet access. But what happens when connectivity is unreliable or expensive? Local-first app development focuses on maintaining local state to ensure reliable and seamless offline experiences.\n\nThis talk explores how functional programming patterns, event sourcing, and Kotlin enable scalable and resilient local-first applications. Using EIDU’s learning platform as a case study — an educational app used in low and middle-income countries — we will showcase how event-driven architectures support offline-first experiences while maintaining strong consistency when syncing with the cloud.\n\nLet's keep in touch! Follow us on: \n💥BlueSky: https://bsky.app/profile/lambdadays.bsky.social\n💥LinkedIn: https://www.linkedin.com/company/lambda-days \n💥Facebook: https://www.facebook.com/lambdadays \n💥Mastodon: https://genserver.social/codesync \n💥Twitter: https://twitter.com/LambdaDays", "duration" => 1320, "filename" => "/downloads/CodeSync/Season 2025/s2025e120900 - Local-First App Development with Event Sourcing: (...) in Kotlin -Merlin Pahic |LambdaDays25.mp4", "id" => "w2Ug4WRUHbw", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=w2Ug4WRUHbw", "playlist_index" => 11, "timestamp" => 1765288956, "title" => "Local-First App Development with Event Sourcing: (...) in Kotlin -Merlin Pahic |LambdaDays25", "upload_date" => "20251209"} 13:21:27.712 [debug] QUERY OK source="sources" db=1.0ms queue=0.1ms idle=898.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" IN (?)) [5] 13:21:27.713 [debug] QUERY OK source="sources" db=0.7ms idle=899.4ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [5] 13:21:27.730 [debug] QUERY OK source="media_items" db=17.1ms idle=900.5ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-12-09 14:02:36Z], 5] 13:21:27.734 [debug] QUERY OK source="media_items" db=2.8ms idle=918.3ms INSERT INTO "media_items" AS m0 ("description","title","uuid","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","prevent_download","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["✨ This talk was recorded at Lambda Days in June 2025. If you're curious about our upcoming event, check https://lambdadays.org ✨\n\nLocal-First App Development with Event Sourcing: A Functional Approach in Kotlin\n\nIn an increasingly connected world, applications often rely on constant internet access. But what happens when connectivity is unreliable or expensive? Local-first app development focuses on maintaining local state to ensure reliable and seamless offline experiences.\n\nThis talk explores how functional programming patterns, event sourcing, and Kotlin enable scalable and resilient local-first applications. Using EIDU’s learning platform as a case study — an educational app used in low and middle-income countries — we will showcase how event-driven architectures support offline-first experiences while maintaining strong consistency when syncing with the cloud.\n\nLet's keep in touch! Follow us on: \n💥BlueSky: https://bsky.app/profile/lambdadays.bsky.social\n💥LinkedIn: https://www.linkedin.com/company/lambda-days \n💥Facebook: https://www.facebook.com/lambdadays \n💥Mastodon: https://genserver.social/codesync \n💥Twitter: https://twitter.com/LambdaDays", "Local-First App Development with Event Sourcing: (...) in Kotlin -Merlin Pahic |LambdaDays25", "cf3fa08a-7499-471c-bb38-788600ef7454", 1320, false, "w2Ug4WRUHbw", "https://www.youtube.com/watch?v=w2Ug4WRUHbw", 11, "/downloads/CodeSync/Season 2025/s2025e120900 - Local-First App Development with Event Sourcing: (...) in Kotlin -Merlin Pahic |LambdaDays25.mp4", false, false, false, 5, [], 63, ~U[2025-12-09 14:02:36Z], ~U[2026-01-03 02:21:27Z], ~U[2026-01-03 02:21:27Z], "✨ This talk was recorded at Lambda Days in June 2025. If you're curious about our upcoming event, check https://lambdadays.org ✨\n\nLocal-First App Development with Event Sourcing: A Functional Approach in Kotlin\n\nIn an increasingly connected world, applications often rely on constant internet access. But what happens when connectivity is unreliable or expensive? Local-first app development focuses on maintaining local state to ensure reliable and seamless offline experiences.\n\nThis talk explores how functional programming patterns, event sourcing, and Kotlin enable scalable and resilient local-first applications. Using EIDU’s learning platform as a case study — an educational app used in low and middle-income countries — we will showcase how event-driven architectures support offline-first experiences while maintaining strong consistency when syncing with the cloud.\n\nLet's keep in touch! Follow us on: \n💥BlueSky: https://bsky.app/profile/lambdadays.bsky.social\n💥LinkedIn: https://www.linkedin.com/company/lambda-days \n💥Facebook: https://www.facebook.com/lambdadays \n💥Mastodon: https://genserver.social/codesync \n💥Twitter: https://twitter.com/LambdaDays", "Local-First App Development with Event Sourcing: (...) in Kotlin -Merlin Pahic |LambdaDays25", 1320, false, "w2Ug4WRUHbw", "https://www.youtube.com/watch?v=w2Ug4WRUHbw", "/downloads/CodeSync/Season 2025/s2025e120900 - Local-First App Development with Event Sourcing: (...) in Kotlin -Merlin Pahic |LambdaDays25.mp4", false, 5, ~U[2025-12-09 14:02:36Z]] 13:21:27.735 [debug] QUERY OK source="sources" db=0.6ms queue=0.1ms idle=307.5ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [5] 13:21:27.736 [debug] QUERY OK source="media_profiles" db=0.3ms idle=24.1ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:21:27.737 [debug] QUERY OK source="media_items" db=0.4ms idle=23.7ms SELECT 1 FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) LIMIT 1 [58576] 13:21:27.737 [debug] Current batch of media processed. Will check again in 1000ms 13:21:28.738 [debug] Current batch of media processed. Will check again in 1000ms 13:21:29.739 [debug] Current batch of media processed. Will check again in 1000ms 13:21:30.741 [debug] Current batch of media processed. Will check again in 1000ms 13:21:31.742 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "✨ This talk was recorded at Lambda Days in June 2025. If you're curious about our upcoming event, check https://lambdadays.org ✨\n\nYour Website as a Function From URL to HTML\n\nBuilding websites seems straightforward. You pick a static site generator and start writing content. However, these websites quickly grow into full-blown software projects. Suddenly, your SSG – its rigid template system, scattered configuration and ad-hoc Markdown – is holding you back for its lack of proper abstraction mechanisms.\n\nIn this talk, we start fresh. Our design approach is driven by one simple insight: Static websites are just functions mapping URLs to HTML. This marks the beginning of our journey in developing our own SSG. In the end we arrive at a bespoke domain-specific language in OCaml.\n\nWhile this exploration may sound theoretical – or even playful – it has substantial practical implications. By treating our website as a function, we can embrace robust engineering practices: clearly separating domain logic from presentation, following the single-responsibility principle, reducing coupling, and ensuring cohesion.\n\nLet's keep in touch! Follow us on: \n💥BlueSky: https://bsky.app/profile/lambdadays.bsky.social\n💥LinkedIn: https://www.linkedin.com/company/lambda-days \n💥Facebook: https://www.facebook.com/lambdadays \n💥Mastodon: https://genserver.social/codesync \n💥Twitter: https://twitter.com/LambdaDays", "duration" => 1183, "filename" => "/downloads/CodeSync/Season 2025/s2025e120900 - Your Website as a Function From URL to HTML - Markus Schlegel | Lambda Days 2025.mp4", "id" => "iU5RNr4F--g", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=iU5RNr4F--g", "playlist_index" => 12, "timestamp" => 1765279547, "title" => "Your Website as a Function From URL to HTML - Markus Schlegel | Lambda Days 2025", "upload_date" => "20251209"} 13:21:31.743 [debug] QUERY OK source="sources" db=0.7ms queue=0.1ms idle=929.9ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" IN (?)) [5] 13:21:31.745 [debug] QUERY OK source="sources" db=0.8ms idle=931.2ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [5] 13:21:31.763 [debug] QUERY OK source="media_items" db=17.4ms idle=932.4ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-12-09 11:25:47Z], 5] 13:21:31.770 [debug] QUERY OK source="media_items" db=5.8ms idle=950.6ms INSERT INTO "media_items" AS m0 ("description","title","uuid","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","prevent_download","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["✨ This talk was recorded at Lambda Days in June 2025. If you're curious about our upcoming event, check https://lambdadays.org ✨\n\nYour Website as a Function From URL to HTML\n\nBuilding websites seems straightforward. You pick a static site generator and start writing content. However, these websites quickly grow into full-blown software projects. Suddenly, your SSG – its rigid template system, scattered configuration and ad-hoc Markdown – is holding you back for its lack of proper abstraction mechanisms.\n\nIn this talk, we start fresh. Our design approach is driven by one simple insight: Static websites are just functions mapping URLs to HTML. This marks the beginning of our journey in developing our own SSG. In the end we arrive at a bespoke domain-specific language in OCaml.\n\nWhile this exploration may sound theoretical – or even playful – it has substantial practical implications. By treating our website as a function, we can embrace robust engineering practices: clearly separating domain logic from presentation, following the single-responsibility principle, reducing coupling, and ensuring cohesion.\n\nLet's keep in touch! Follow us on: \n💥BlueSky: https://bsky.app/profile/lambdadays.bsky.social\n💥LinkedIn: https://www.linkedin.com/company/lambda-days \n💥Facebook: https://www.facebook.com/lambdadays \n💥Mastodon: https://genserver.social/codesync \n💥Twitter: https://twitter.com/LambdaDays", "Your Website as a Function From URL to HTML - Markus Schlegel | Lambda Days 2025", "e40cf773-83f5-48f3-807c-497b4ba85dc1", 1183, false, "iU5RNr4F--g", "https://www.youtube.com/watch?v=iU5RNr4F--g", 12, "/downloads/CodeSync/Season 2025/s2025e120900 - Your Website as a Function From URL to HTML - Markus Schlegel | Lambda Days 2025.mp4", false, false, false, 5, [], 63, ~U[2025-12-09 11:25:47Z], ~U[2026-01-03 02:21:31Z], ~U[2026-01-03 02:21:31Z], "✨ This talk was recorded at Lambda Days in June 2025. If you're curious about our upcoming event, check https://lambdadays.org ✨\n\nYour Website as a Function From URL to HTML\n\nBuilding websites seems straightforward. You pick a static site generator and start writing content. However, these websites quickly grow into full-blown software projects. Suddenly, your SSG – its rigid template system, scattered configuration and ad-hoc Markdown – is holding you back for its lack of proper abstraction mechanisms.\n\nIn this talk, we start fresh. Our design approach is driven by one simple insight: Static websites are just functions mapping URLs to HTML. This marks the beginning of our journey in developing our own SSG. In the end we arrive at a bespoke domain-specific language in OCaml.\n\nWhile this exploration may sound theoretical – or even playful – it has substantial practical implications. By treating our website as a function, we can embrace robust engineering practices: clearly separating domain logic from presentation, following the single-responsibility principle, reducing coupling, and ensuring cohesion.\n\nLet's keep in touch! Follow us on: \n💥BlueSky: https://bsky.app/profile/lambdadays.bsky.social\n💥LinkedIn: https://www.linkedin.com/company/lambda-days \n💥Facebook: https://www.facebook.com/lambdadays \n💥Mastodon: https://genserver.social/codesync \n💥Twitter: https://twitter.com/LambdaDays", "Your Website as a Function From URL to HTML - Markus Schlegel | Lambda Days 2025", 1183, false, "iU5RNr4F--g", "https://www.youtube.com/watch?v=iU5RNr4F--g", "/downloads/CodeSync/Season 2025/s2025e120900 - Your Website as a Function From URL to HTML - Markus Schlegel | Lambda Days 2025.mp4", false, 5, ~U[2025-12-09 11:25:47Z]] 13:21:31.771 [debug] QUERY OK source="sources" db=0.7ms queue=0.1ms idle=334.5ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [5] 13:21:31.772 [debug] QUERY OK source="media_profiles" db=0.6ms queue=0.1ms idle=27.7ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:21:31.773 [debug] QUERY OK source="media_items" db=0.8ms idle=27.6ms SELECT 1 FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) LIMIT 1 [58579] 13:21:31.773 [debug] Current batch of media processed. Will check again in 1000ms 13:21:32.775 [debug] Current batch of media processed. Will check again in 1000ms 13:21:33.776 [debug] Current batch of media processed. Will check again in 1000ms 13:21:34.777 [debug] Current batch of media processed. Will check again in 1000ms 13:21:35.777 [debug] Current batch of media processed. Will check again in 1000ms 13:21:36.779 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "✨ This talk was recorded at Lambda Days in June 2025. If you're curious about our upcoming event, check https://lambdadays.org ✨\n\nSuspension: the magic behind composability (or \"The Kyo Monad\")\n\nKyo is a new effect system in Scala with an innovative approach to generalize monadic computations to express composable algebraic effects. This talk will cover the internals of the library to address common questions: How does it provide effect composability? How can we reason about effect ordering? What’s behind its next-level performance? We’ll explore Kyo’s core suspension mechanism, see how it allows for unparalleled composability, and how it compares to similar solutions like ZIO and Caprese. https://getkyo.io\n\nOBJECTIVES\n- Introduce Kyo as a new encoding of algebraic effects\n- Explore its effect suspension and handling mechanism\n- Provide a mental model for how to reason about effect composition\n- Share an overview of the main performance optimizations of its monadic encoding\n\nLet's keep in touch! Follow us on: \n💥BlueSky: https://bsky.app/profile/lambdadays.bsky.social\n💥LinkedIn: https://www.linkedin.com/company/lambda-days \n💥Facebook: https://www.facebook.com/lambdadays \n💥Mastodon: https://genserver.social/codesync \n💥Twitter: https://twitter.com/LambdaDays", "duration" => 2634, "filename" => "/downloads/CodeSync/Season 2025/s2025e120900 - Suspension: the magic behind composability (or "The Kyo Monad") - Flavio Brasil | Lambda Days 2025.mp4", "id" => "y3KiuFczOFE", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=y3KiuFczOFE", "playlist_index" => 13, "timestamp" => 1765277919, "title" => "Suspension: the magic behind composability (or \"The Kyo Monad\") - Flavio Brasil | Lambda Days 2025", "upload_date" => "20251209"} 13:21:36.781 [debug] QUERY OK source="sources" db=0.9ms queue=0.2ms idle=1967.5ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" IN (?)) [5] 13:21:36.783 [debug] QUERY OK source="sources" db=0.7ms queue=0.1ms idle=1969.3ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [5] 13:21:36.801 [debug] QUERY OK source="media_items" db=17.8ms queue=0.1ms idle=1970.6ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-12-09 10:58:39Z], 5] 13:21:36.826 [debug] QUERY OK source="media_items" db=23.1ms queue=0.1ms idle=1355.0ms INSERT INTO "media_items" AS m0 ("description","title","uuid","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","prevent_download","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["✨ This talk was recorded at Lambda Days in June 2025. If you're curious about our upcoming event, check https://lambdadays.org ✨\n\nSuspension: the magic behind composability (or \"The Kyo Monad\")\n\nKyo is a new effect system in Scala with an innovative approach to generalize monadic computations to express composable algebraic effects. This talk will cover the internals of the library to address common questions: How does it provide effect composability? How can we reason about effect ordering? What’s behind its next-level performance? We’ll explore Kyo’s core suspension mechanism, see how it allows for unparalleled composability, and how it compares to similar solutions like ZIO and Caprese. https://getkyo.io\n\nOBJECTIVES\n- Introduce Kyo as a new encoding of algebraic effects\n- Explore its effect suspension and handling mechanism\n- Provide a mental model for how to reason about effect composition\n- Share an overview of the main performance optimizations of its monadic encoding\n\nLet's keep in touch! Follow us on: \n💥BlueSky: https://bsky.app/profile/lambdadays.bsky.social\n💥LinkedIn: https://www.linkedin.com/company/lambda-days \n💥Facebook: https://www.facebook.com/lambdadays \n💥Mastodon: https://genserver.social/codesync \n💥Twitter: https://twitter.com/LambdaDays", "Suspension: the magic behind composability (or \"The Kyo Monad\") - Flavio Brasil | Lambda Days 2025", "db8ccc36-5696-4e7d-8814-a7382cf73530", 2634, false, "y3KiuFczOFE", "https://www.youtube.com/watch?v=y3KiuFczOFE", 13, "/downloads/CodeSync/Season 2025/s2025e120900 - Suspension: the magic behind composability (or "The Kyo Monad") - Flavio Brasil | Lambda Days 2025.mp4", false, false, false, 5, [], 63, ~U[2025-12-09 10:58:39Z], ~U[2026-01-03 02:21:36Z], ~U[2026-01-03 02:21:36Z], "✨ This talk was recorded at Lambda Days in June 2025. If you're curious about our upcoming event, check https://lambdadays.org ✨\n\nSuspension: the magic behind composability (or \"The Kyo Monad\")\n\nKyo is a new effect system in Scala with an innovative approach to generalize monadic computations to express composable algebraic effects. This talk will cover the internals of the library to address common questions: How does it provide effect composability? How can we reason about effect ordering? What’s behind its next-level performance? We’ll explore Kyo’s core suspension mechanism, see how it allows for unparalleled composability, and how it compares to similar solutions like ZIO and Caprese. https://getkyo.io\n\nOBJECTIVES\n- Introduce Kyo as a new encoding of algebraic effects\n- Explore its effect suspension and handling mechanism\n- Provide a mental model for how to reason about effect composition\n- Share an overview of the main performance optimizations of its monadic encoding\n\nLet's keep in touch! Follow us on: \n💥BlueSky: https://bsky.app/profile/lambdadays.bsky.social\n💥LinkedIn: https://www.linkedin.com/company/lambda-days \n💥Facebook: https://www.facebook.com/lambdadays \n💥Mastodon: https://genserver.social/codesync \n💥Twitter: https://twitter.com/LambdaDays", "Suspension: the magic behind composability (or \"The Kyo Monad\") - Flavio Brasil | Lambda Days 2025", 2634, false, "y3KiuFczOFE", "https://www.youtube.com/watch?v=y3KiuFczOFE", "/downloads/CodeSync/Season 2025/s2025e120900 - Suspension: the magic behind composability (or "The Kyo Monad") - Flavio Brasil | Lambda Days 2025.mp4", false, 5, ~U[2025-12-09 10:58:39Z]] 13:21:36.827 [debug] QUERY OK source="sources" db=0.7ms queue=0.1ms idle=377.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [5] 13:21:36.828 [debug] QUERY OK source="media_profiles" db=0.5ms queue=0.1ms idle=46.6ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:21:36.830 [debug] QUERY OK source="media_items" db=0.6ms queue=0.1ms idle=46.4ms SELECT 1 FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) LIMIT 1 [58582] 13:21:36.830 [debug] Current batch of media processed. Will check again in 1000ms 13:21:37.832 [debug] Current batch of media processed. Will check again in 1000ms 13:21:38.833 [debug] Current batch of media processed. Will check again in 1000ms 13:21:39.834 [debug] Current batch of media processed. Will check again in 1000ms 13:21:40.835 [debug] Current batch of media processed. Will check again in 1000ms 13:21:41.836 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "✨ This talk was recorded at Lambda Days in June 2025. If you're curious about our upcoming event, check https://lambdadays.org ✨\n\nElectrifying Norway with F# and DDD\n\nImagine inheriting a large C# legacy codebase for electrical transmission line modelling software. It desperately needs love. Where do you start? What would happen if you rewrote its core parts to F# with Domain-Driven Design in mind? \n\nIt turns out that Units of Measure, Expressions-only syntax, Immutability, and Exhaustive Pattern Matching are incredibly useful features of F#. Combined with Domain-Driven Design (DDD), strongly typing your domain with Algebraic Data Types in F# has never been easier.\n\nJoin me as I take you through our rewriting journey with specific examples. There was some agony involved, but it was mostly pure fun!\n\nLet's keep in touch! Follow us on: \n💥BlueSky: https://bsky.app/profile/lambdadays.bsky.social\n💥LinkedIn: https://www.linkedin.com/company/lambda-days \n💥Facebook: https://www.facebook.com/lambdadays \n💥Mastodon: https://genserver.social/codesync \n💥Twitter: https://twitter.com/LambdaDays", "duration" => 2414, "filename" => "/downloads/CodeSync/Season 2025/s2025e120900 - Electrifying Norway with F# and DDD - Almir Mesic | Lambda Days 2025.mp4", "id" => "xE23wssaleE", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=xE23wssaleE", "playlist_index" => 14, "timestamp" => 1765277919, "title" => "Electrifying Norway with F# and DDD - Almir Mesic | Lambda Days 2025", "upload_date" => "20251209"} 13:21:41.838 [debug] QUERY OK source="sources" db=1.2ms queue=0.1ms idle=1023.8ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" IN (?)) [5] 13:21:41.839 [debug] QUERY OK source="sources" db=0.8ms idle=1025.5ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [5] 13:21:41.858 [debug] QUERY OK source="media_items" db=18.3ms idle=1026.7ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-12-09 10:58:39Z], 5] 13:21:41.900 [debug] QUERY OK source="media_items" db=40.6ms idle=1045.7ms INSERT INTO "media_items" AS m0 ("description","title","uuid","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","prevent_download","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["✨ This talk was recorded at Lambda Days in June 2025. If you're curious about our upcoming event, check https://lambdadays.org ✨\n\nElectrifying Norway with F# and DDD\n\nImagine inheriting a large C# legacy codebase for electrical transmission line modelling software. It desperately needs love. Where do you start? What would happen if you rewrote its core parts to F# with Domain-Driven Design in mind? \n\nIt turns out that Units of Measure, Expressions-only syntax, Immutability, and Exhaustive Pattern Matching are incredibly useful features of F#. Combined with Domain-Driven Design (DDD), strongly typing your domain with Algebraic Data Types in F# has never been easier.\n\nJoin me as I take you through our rewriting journey with specific examples. There was some agony involved, but it was mostly pure fun!\n\nLet's keep in touch! Follow us on: \n💥BlueSky: https://bsky.app/profile/lambdadays.bsky.social\n💥LinkedIn: https://www.linkedin.com/company/lambda-days \n💥Facebook: https://www.facebook.com/lambdadays \n💥Mastodon: https://genserver.social/codesync \n💥Twitter: https://twitter.com/LambdaDays", "Electrifying Norway with F# and DDD - Almir Mesic | Lambda Days 2025", "c171a52a-8519-453b-973d-4f6e806e6078", 2414, false, "xE23wssaleE", "https://www.youtube.com/watch?v=xE23wssaleE", 14, "/downloads/CodeSync/Season 2025/s2025e120900 - Electrifying Norway with F# and DDD - Almir Mesic | Lambda Days 2025.mp4", false, false, false, 5, [], 63, ~U[2025-12-09 10:58:39Z], ~U[2026-01-03 02:21:41Z], ~U[2026-01-03 02:21:41Z], "✨ This talk was recorded at Lambda Days in June 2025. If you're curious about our upcoming event, check https://lambdadays.org ✨\n\nElectrifying Norway with F# and DDD\n\nImagine inheriting a large C# legacy codebase for electrical transmission line modelling software. It desperately needs love. Where do you start? What would happen if you rewrote its core parts to F# with Domain-Driven Design in mind? \n\nIt turns out that Units of Measure, Expressions-only syntax, Immutability, and Exhaustive Pattern Matching are incredibly useful features of F#. Combined with Domain-Driven Design (DDD), strongly typing your domain with Algebraic Data Types in F# has never been easier.\n\nJoin me as I take you through our rewriting journey with specific examples. There was some agony involved, but it was mostly pure fun!\n\nLet's keep in touch! Follow us on: \n💥BlueSky: https://bsky.app/profile/lambdadays.bsky.social\n💥LinkedIn: https://www.linkedin.com/company/lambda-days \n💥Facebook: https://www.facebook.com/lambdadays \n💥Mastodon: https://genserver.social/codesync \n💥Twitter: https://twitter.com/LambdaDays", "Electrifying Norway with F# and DDD - Almir Mesic | Lambda Days 2025", 2414, false, "xE23wssaleE", "https://www.youtube.com/watch?v=xE23wssaleE", "/downloads/CodeSync/Season 2025/s2025e120900 - Electrifying Norway with F# and DDD - Almir Mesic | Lambda Days 2025.mp4", false, 5, ~U[2025-12-09 10:58:39Z]] 13:21:41.901 [debug] QUERY OK source="sources" db=0.7ms queue=0.1ms idle=431.3ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [5] 13:21:41.902 [debug] QUERY OK source="media_profiles" db=0.7ms idle=63.3ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:21:41.903 [debug] QUERY OK source="media_items" db=0.9ms idle=63.2ms SELECT 1 FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) LIMIT 1 [58585] 13:21:41.904 [debug] Current batch of media processed. Will check again in 1000ms 13:21:42.632 [info] {"source":"oban","duration":3862,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:21:42.905 [debug] Current batch of media processed. Will check again in 1000ms 13:21:43.905 [debug] Current batch of media processed. Will check again in 1000ms 13:21:44.906 [debug] Current batch of media processed. Will check again in 1000ms 13:21:45.908 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "✨ This talk was recorded at Lambda Days in June 2025. If you're curious about our upcoming event, check https://lambdadays.org ✨\n\nEffect Systems in Practice\n\nWe will approach the topic of Effect Systems to write Haskell applications, understand why it is important to have semantic effect tracking in your software, and see how it all fits into the design and maintenance of software systems. We will explore the design of effect systems since the early days, and see how Effectful, developed for industrial needs of performance and ease-of-use, fares in 2025.\n\nOBJECTIVES\nGet an understanding of the trade-offs between effect systems in Haskell, and understand the need for semantic effect tracking\n\nLet's keep in touch! Follow us on: \n💥BlueSky: https://bsky.app/profile/lambdadays.bsky.social\n💥LinkedIn: https://www.linkedin.com/company/lambda-days \n💥Facebook: https://www.facebook.com/lambdadays \n💥Mastodon: https://genserver.social/codesync \n💥Twitter: https://twitter.com/LambdaDays", "duration" => 2407, "filename" => "/downloads/CodeSync/Season 2025/s2025e120900 - Effect Systems in Practice Hécate | Lambda Days 2025.mp4", "id" => "wZy0pVkQ-Jg", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=wZy0pVkQ-Jg", "playlist_index" => 15, "timestamp" => 1765277919, "title" => "Effect Systems in Practice Hécate | Lambda Days 2025", "upload_date" => "20251209"} 13:21:45.909 [debug] QUERY OK source="sources" db=0.9ms queue=0.1ms idle=428.5ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" IN (?)) [5] 13:21:45.911 [debug] QUERY OK source="sources" db=0.8ms idle=97.1ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [5] 13:21:45.929 [debug] QUERY OK source="media_items" db=18.0ms queue=0.1ms idle=98.3ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-12-09 10:58:39Z], 5] 13:21:45.938 [debug] QUERY OK source="media_items" db=7.6ms idle=117.0ms INSERT INTO "media_items" AS m0 ("description","title","uuid","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","prevent_download","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["✨ This talk was recorded at Lambda Days in June 2025. If you're curious about our upcoming event, check https://lambdadays.org ✨\n\nEffect Systems in Practice\n\nWe will approach the topic of Effect Systems to write Haskell applications, understand why it is important to have semantic effect tracking in your software, and see how it all fits into the design and maintenance of software systems. We will explore the design of effect systems since the early days, and see how Effectful, developed for industrial needs of performance and ease-of-use, fares in 2025.\n\nOBJECTIVES\nGet an understanding of the trade-offs between effect systems in Haskell, and understand the need for semantic effect tracking\n\nLet's keep in touch! Follow us on: \n💥BlueSky: https://bsky.app/profile/lambdadays.bsky.social\n💥LinkedIn: https://www.linkedin.com/company/lambda-days \n💥Facebook: https://www.facebook.com/lambdadays \n💥Mastodon: https://genserver.social/codesync \n💥Twitter: https://twitter.com/LambdaDays", "Effect Systems in Practice Hécate | Lambda Days 2025", "a2c45fb5-104d-4300-814a-764f580fadcc", 2407, false, "wZy0pVkQ-Jg", "https://www.youtube.com/watch?v=wZy0pVkQ-Jg", 15, "/downloads/CodeSync/Season 2025/s2025e120900 - Effect Systems in Practice Hécate | Lambda Days 2025.mp4", false, false, false, 5, [], 63, ~U[2025-12-09 10:58:39Z], ~U[2026-01-03 02:21:45Z], ~U[2026-01-03 02:21:45Z], "✨ This talk was recorded at Lambda Days in June 2025. If you're curious about our upcoming event, check https://lambdadays.org ✨\n\nEffect Systems in Practice\n\nWe will approach the topic of Effect Systems to write Haskell applications, understand why it is important to have semantic effect tracking in your software, and see how it all fits into the design and maintenance of software systems. We will explore the design of effect systems since the early days, and see how Effectful, developed for industrial needs of performance and ease-of-use, fares in 2025.\n\nOBJECTIVES\nGet an understanding of the trade-offs between effect systems in Haskell, and understand the need for semantic effect tracking\n\nLet's keep in touch! Follow us on: \n💥BlueSky: https://bsky.app/profile/lambdadays.bsky.social\n💥LinkedIn: https://www.linkedin.com/company/lambda-days \n💥Facebook: https://www.facebook.com/lambdadays \n💥Mastodon: https://genserver.social/codesync \n💥Twitter: https://twitter.com/LambdaDays", "Effect Systems in Practice Hécate | Lambda Days 2025", 2407, false, "wZy0pVkQ-Jg", "https://www.youtube.com/watch?v=wZy0pVkQ-Jg", "/downloads/CodeSync/Season 2025/s2025e120900 - Effect Systems in Practice Hécate | Lambda Days 2025.mp4", false, 5, ~U[2025-12-09 10:58:39Z]] 13:21:45.939 [debug] QUERY OK source="sources" db=1.0ms queue=0.1ms idle=125.4ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [5] 13:21:45.940 [debug] QUERY OK source="media_profiles" db=0.7ms idle=30.1ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:21:45.942 [debug] QUERY OK source="media_items" db=0.9ms idle=30.1ms SELECT 1 FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) LIMIT 1 [58589] 13:21:45.942 [debug] Current batch of media processed. Will check again in 1000ms 13:21:46.942 [debug] Current batch of media processed. Will check again in 1000ms 13:21:47.944 [debug] Current batch of media processed. Will check again in 1000ms 13:21:48.945 [debug] Current batch of media processed. Will check again in 1000ms 13:21:49.946 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "✨ This talk was recorded at Lambda Days in June 2025. If you're curious about our upcoming event, check https://lambdadays.org ✨\n\nYour docs are a program\n\nWhen programming, documentation typically takes a back seat to development. There are good reasons for this: docs are hard to maintain, as well as write, and the tools for working with them can be painful. But writing documentation is very similar to writing code: it's just that we don't have a great language for it yet. This talk posits that docs are programs. If so, what does their ideal programming language look like? To address this, we treat documentation as an artefact produced by compilation. Like a programming pipeline, a doc pipeline has phases, symbols and errors, but that it also has unique concerns around structure and flow.\n\nIn the search for our ideal language, we'll explore Pollen in Racket, Elixir Livebooks, mdoc and Laika in Scala, and see how these tools influence our experience. At the end, we'll have a vision of what writing docs could be. You might not enjoy writing docs, but you'll improve your workflow and even be inspired to develop your own doc tooling.\n\nLet's keep in touch! Follow us on: \n💥BlueSky: https://bsky.app/profile/lambdadays.bsky.social\n💥LinkedIn: https://www.linkedin.com/company/lambda-days \n💥Facebook: https://www.facebook.com/lambdadays \n💥Mastodon: https://genserver.social/codesync \n💥Twitter: https://twitter.com/LambdaDays", "duration" => 2865, "filename" => "/downloads/CodeSync/Season 2025/s2025e120900 - Your docs are a program - Zainab Ali | Lambda Days 2025.mp4", "id" => "vxsIBD9vIYk", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=vxsIBD9vIYk", "playlist_index" => 16, "timestamp" => 1765277919, "title" => "Your docs are a program - Zainab Ali | Lambda Days 2025", "upload_date" => "20251209"} 13:21:49.948 [debug] QUERY OK source="sources" db=1.2ms queue=0.1ms idle=454.2ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" IN (?)) [5] 13:21:49.949 [debug] QUERY OK source="sources" db=1.0ms queue=0.1ms idle=135.7ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [5] 13:21:49.969 [debug] QUERY OK source="media_items" db=18.9ms idle=137.1ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-12-09 10:58:39Z], 5] 13:21:49.973 [debug] QUERY OK source="media_items" db=2.8ms idle=156.7ms INSERT INTO "media_items" AS m0 ("description","title","uuid","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","prevent_download","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["✨ This talk was recorded at Lambda Days in June 2025. If you're curious about our upcoming event, check https://lambdadays.org ✨\n\nYour docs are a program\n\nWhen programming, documentation typically takes a back seat to development. There are good reasons for this: docs are hard to maintain, as well as write, and the tools for working with them can be painful. But writing documentation is very similar to writing code: it's just that we don't have a great language for it yet. This talk posits that docs are programs. If so, what does their ideal programming language look like? To address this, we treat documentation as an artefact produced by compilation. Like a programming pipeline, a doc pipeline has phases, symbols and errors, but that it also has unique concerns around structure and flow.\n\nIn the search for our ideal language, we'll explore Pollen in Racket, Elixir Livebooks, mdoc and Laika in Scala, and see how these tools influence our experience. At the end, we'll have a vision of what writing docs could be. You might not enjoy writing docs, but you'll improve your workflow and even be inspired to develop your own doc tooling.\n\nLet's keep in touch! Follow us on: \n💥BlueSky: https://bsky.app/profile/lambdadays.bsky.social\n💥LinkedIn: https://www.linkedin.com/company/lambda-days \n💥Facebook: https://www.facebook.com/lambdadays \n💥Mastodon: https://genserver.social/codesync \n💥Twitter: https://twitter.com/LambdaDays", "Your docs are a program - Zainab Ali | Lambda Days 2025", "710a7bf8-f301-4354-8a05-a5c80bec719e", 2865, false, "vxsIBD9vIYk", "https://www.youtube.com/watch?v=vxsIBD9vIYk", 16, "/downloads/CodeSync/Season 2025/s2025e120900 - Your docs are a program - Zainab Ali | Lambda Days 2025.mp4", false, false, false, 5, [], 63, ~U[2025-12-09 10:58:39Z], ~U[2026-01-03 02:21:49Z], ~U[2026-01-03 02:21:49Z], "✨ This talk was recorded at Lambda Days in June 2025. If you're curious about our upcoming event, check https://lambdadays.org ✨\n\nYour docs are a program\n\nWhen programming, documentation typically takes a back seat to development. There are good reasons for this: docs are hard to maintain, as well as write, and the tools for working with them can be painful. But writing documentation is very similar to writing code: it's just that we don't have a great language for it yet. This talk posits that docs are programs. If so, what does their ideal programming language look like? To address this, we treat documentation as an artefact produced by compilation. Like a programming pipeline, a doc pipeline has phases, symbols and errors, but that it also has unique concerns around structure and flow.\n\nIn the search for our ideal language, we'll explore Pollen in Racket, Elixir Livebooks, mdoc and Laika in Scala, and see how these tools influence our experience. At the end, we'll have a vision of what writing docs could be. You might not enjoy writing docs, but you'll improve your workflow and even be inspired to develop your own doc tooling.\n\nLet's keep in touch! Follow us on: \n💥BlueSky: https://bsky.app/profile/lambdadays.bsky.social\n💥LinkedIn: https://www.linkedin.com/company/lambda-days \n💥Facebook: https://www.facebook.com/lambdadays \n💥Mastodon: https://genserver.social/codesync \n💥Twitter: https://twitter.com/LambdaDays", "Your docs are a program - Zainab Ali | Lambda Days 2025", 2865, false, "vxsIBD9vIYk", "https://www.youtube.com/watch?v=vxsIBD9vIYk", "/downloads/CodeSync/Season 2025/s2025e120900 - Your docs are a program - Zainab Ali | Lambda Days 2025.mp4", false, 5, ~U[2025-12-09 10:58:39Z]] 13:21:49.973 [debug] QUERY OK source="sources" db=0.5ms queue=0.1ms idle=160.4ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [5] 13:21:49.975 [debug] QUERY OK source="media_profiles" db=0.7ms queue=0.1ms idle=26.1ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:21:49.976 [debug] QUERY OK source="media_items" db=0.8ms idle=25.8ms SELECT 1 FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) LIMIT 1 [58592] 13:21:49.976 [debug] Current batch of media processed. Will check again in 1000ms 13:21:50.978 [debug] Current batch of media processed. Will check again in 1000ms 13:21:51.979 [debug] Current batch of media processed. Will check again in 1000ms 13:21:52.145 [info] GET /sources/13/media/45966 13:21:52.145 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "45966", "source_id" => "13"} Pipelines: [:browser] 13:21:52.147 [debug] QUERY OK source="media_items" db=0.8ms idle=646.3ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [45966] 13:21:52.148 [debug] QUERY OK source="tasks" db=0.7ms idle=334.4ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [45966] 13:21:52.148 [debug] QUERY OK source="sources" db=0.6ms idle=334.4ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [13] 13:21:52.149 [debug] QUERY OK source="settings" db=0.2ms idle=335.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:21:52.149 [debug] QUERY OK source="settings" db=0.2ms idle=336.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:21:52.150 [debug] QUERY OK source="settings" db=0.2ms idle=3.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:21:52.151 [debug] QUERY OK source="media_profiles" db=0.3ms idle=3.2ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:21:52.172 [info] Sent 200 in 27ms 13:21:52.979 [debug] Current batch of media processed. Will check again in 1000ms 13:21:53.981 [debug] Current batch of media processed. Will check again in 1000ms 13:21:54.982 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "✨ This talk was recorded at Lambda Days in June 2025. If you're curious about our upcoming event, check https://lambdadays.org ✨\n\nProgramming a Language\n\nProgramming languages are a large amount of our day to day work and, for some of us, our hobbies. And I am very much of the opinion that in order to fully understand our tools, we must be able to make them ourselves.\n\nIn this talk, I will show you how to create a programming language from scratch. You will come away from this with a deeper understanding of, and insights on, your tools. It will also teach you what you need to write powerful DSLs, which in my experience can be an absolute game changer when maintaining software whose purpose I'm not an expert on, but I do have access to experts.\n\nLet's keep in touch! Follow us on: \n💥BlueSky: https://bsky.app/profile/lambdadays.bsky.social\n💥LinkedIn: https://www.linkedin.com/company/lambda-days \n💥Facebook: https://www.facebook.com/lambdadays \n💥Mastodon: https://genserver.social/codesync \n💥Twitter: https://twitter.com/LambdaDays", "duration" => 3221, "filename" => "/downloads/CodeSync/Season 2025/s2025e120900 - Programming a Language - Nicolas Rinaudo | Lambda Days 2025.mp4", "id" => "uZUPMxm4XAM", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=uZUPMxm4XAM", "playlist_index" => 17, "timestamp" => 1765277919, "title" => "Programming a Language - Nicolas Rinaudo | Lambda Days 2025", "upload_date" => "20251209"} 13:21:54.984 [debug] QUERY OK source="sources" db=0.8ms queue=0.1ms idle=1170.3ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" IN (?)) [5] 13:21:54.986 [debug] QUERY OK source="sources" db=0.7ms queue=0.2ms idle=1172.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [5] 13:21:55.004 [debug] QUERY OK source="media_items" db=17.3ms queue=0.1ms idle=1173.4ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-12-09 10:58:39Z], 5] 13:21:55.008 [debug] QUERY OK source="media_items" db=2.5ms queue=0.1ms idle=1191.8ms INSERT INTO "media_items" AS m0 ("description","title","uuid","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","prevent_download","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["✨ This talk was recorded at Lambda Days in June 2025. If you're curious about our upcoming event, check https://lambdadays.org ✨\n\nProgramming a Language\n\nProgramming languages are a large amount of our day to day work and, for some of us, our hobbies. And I am very much of the opinion that in order to fully understand our tools, we must be able to make them ourselves.\n\nIn this talk, I will show you how to create a programming language from scratch. You will come away from this with a deeper understanding of, and insights on, your tools. It will also teach you what you need to write powerful DSLs, which in my experience can be an absolute game changer when maintaining software whose purpose I'm not an expert on, but I do have access to experts.\n\nLet's keep in touch! Follow us on: \n💥BlueSky: https://bsky.app/profile/lambdadays.bsky.social\n💥LinkedIn: https://www.linkedin.com/company/lambda-days \n💥Facebook: https://www.facebook.com/lambdadays \n💥Mastodon: https://genserver.social/codesync \n💥Twitter: https://twitter.com/LambdaDays", "Programming a Language - Nicolas Rinaudo | Lambda Days 2025", "1a2b3d43-41b2-44d6-b812-78775ec6b8c3", 3221, false, "uZUPMxm4XAM", "https://www.youtube.com/watch?v=uZUPMxm4XAM", 17, "/downloads/CodeSync/Season 2025/s2025e120900 - Programming a Language - Nicolas Rinaudo | Lambda Days 2025.mp4", false, false, false, 5, [], 63, ~U[2025-12-09 10:58:39Z], ~U[2026-01-03 02:21:55Z], ~U[2026-01-03 02:21:55Z], "✨ This talk was recorded at Lambda Days in June 2025. If you're curious about our upcoming event, check https://lambdadays.org ✨\n\nProgramming a Language\n\nProgramming languages are a large amount of our day to day work and, for some of us, our hobbies. And I am very much of the opinion that in order to fully understand our tools, we must be able to make them ourselves.\n\nIn this talk, I will show you how to create a programming language from scratch. You will come away from this with a deeper understanding of, and insights on, your tools. It will also teach you what you need to write powerful DSLs, which in my experience can be an absolute game changer when maintaining software whose purpose I'm not an expert on, but I do have access to experts.\n\nLet's keep in touch! Follow us on: \n💥BlueSky: https://bsky.app/profile/lambdadays.bsky.social\n💥LinkedIn: https://www.linkedin.com/company/lambda-days \n💥Facebook: https://www.facebook.com/lambdadays \n💥Mastodon: https://genserver.social/codesync \n💥Twitter: https://twitter.com/LambdaDays", "Programming a Language - Nicolas Rinaudo | Lambda Days 2025", 3221, false, "uZUPMxm4XAM", "https://www.youtube.com/watch?v=uZUPMxm4XAM", "/downloads/CodeSync/Season 2025/s2025e120900 - Programming a Language - Nicolas Rinaudo | Lambda Days 2025.mp4", false, 5, ~U[2025-12-09 10:58:39Z]] 13:21:55.009 [debug] QUERY OK source="sources" db=0.4ms queue=0.2ms idle=498.3ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [5] 13:21:55.010 [debug] QUERY OK source="media_profiles" db=0.5ms queue=0.1ms idle=25.5ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:21:55.012 [debug] QUERY OK source="media_items" db=0.6ms queue=0.1ms idle=25.2ms SELECT 1 FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) LIMIT 1 [58609] 13:21:55.012 [debug] Current batch of media processed. Will check again in 1000ms 13:21:55.034 [info] GET /sources/18/media/10290/edit 13:21:55.034 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "10290", "source_id" => "18"} Pipelines: [:browser] 13:21:55.036 [debug] QUERY OK source="media_items" db=1.9ms idle=30.3ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [10290] 13:21:55.038 [debug] QUERY OK source="settings" db=1.2ms idle=29.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:21:55.040 [info] GET /sources/16/media/10062/edit 13:21:55.040 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "10062", "source_id" => "16"} Pipelines: [:browser] 13:21:55.040 [info] GET /sources/18/media/10498 13:21:55.040 [info] GET /sources/18/media/59076 13:21:55.041 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "59076", "source_id" => "18"} Pipelines: [:browser] 13:21:55.041 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "10498", "source_id" => "18"} Pipelines: [:browser] 13:21:55.042 [info] GET /sources/16/media/58866/edit 13:21:55.042 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "58866", "source_id" => "16"} Pipelines: [:browser] 13:21:55.043 [debug] QUERY OK source="media_items" db=1.5ms idle=29.2ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [59076] 13:21:55.043 [debug] QUERY OK source="settings" db=1.7ms queue=0.3ms idle=31.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:21:55.043 [debug] QUERY OK source="media_items" db=2.2ms queue=0.1ms idle=30.3ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [10062] 13:21:55.043 [debug] QUERY OK source="media_items" db=1.0ms idle=4.1ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [58866] 13:21:55.044 [debug] QUERY OK source="tasks" db=0.8ms queue=0.1ms idle=0.3ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [59076] 13:21:55.044 [debug] QUERY OK source="sources" db=0.9ms idle=0.2ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [18] 13:21:55.044 [debug] QUERY OK source="settings" db=0.4ms queue=0.1ms idle=0.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:21:55.045 [debug] QUERY OK source="settings" db=0.7ms queue=0.8ms idle=0.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:21:55.045 [debug] QUERY OK source="settings" db=0.9ms queue=0.6ms idle=0.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:21:55.047 [info] GET /sources/16/media/55936/edit 13:21:55.047 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "55936", "source_id" => "16"} Pipelines: [:browser] 13:21:55.047 [debug] QUERY OK source="settings" db=0.9ms queue=0.6ms idle=1.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:21:55.047 [debug] QUERY OK source="settings" db=1.1ms queue=0.8ms idle=1.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:21:55.048 [debug] QUERY OK source="settings" db=0.8ms queue=0.4ms idle=1.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:21:55.049 [info] Sent 200 in 15ms 13:21:55.049 [debug] QUERY OK source="media_items" db=1.0ms queue=0.1ms idle=2.1ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [55936] 13:21:55.049 [debug] QUERY OK source="settings" db=0.4ms queue=0.1ms idle=0.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:21:55.050 [debug] QUERY OK source="settings" db=1.0ms idle=0.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:21:55.050 [debug] QUERY OK source="settings" db=1.2ms queue=0.1ms idle=1.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:21:55.050 [debug] QUERY OK source="settings" db=0.4ms queue=0.1ms idle=0.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:21:55.051 [debug] QUERY OK source="settings" db=0.9ms queue=0.1ms idle=0.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:21:55.051 [info] Sent 200 in 11ms 13:21:55.051 [debug] QUERY OK source="settings" db=0.2ms idle=1.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:21:55.052 [debug] QUERY OK source="settings" db=0.1ms idle=2.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:21:55.052 [debug] QUERY OK source="media_profiles" db=0.4ms idle=2.0ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:21:55.053 [info] Sent 200 in 11ms 13:21:55.056 [info] Sent 200 in 9ms 13:21:55.056 [info] Sent 200 in 15ms 13:21:55.250 [debug] QUERY OK source="media_items" db=208.7ms idle=5.1ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [10498] 13:21:55.252 [debug] QUERY OK source="tasks" db=0.7ms queue=0.1ms idle=199.6ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [10498] 13:21:55.252 [debug] QUERY OK source="sources" db=0.8ms idle=199.9ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [18] 13:21:55.253 [debug] QUERY OK source="settings" db=0.3ms queue=0.1ms idle=200.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:21:55.254 [debug] QUERY OK source="settings" db=0.2ms idle=201.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:21:55.255 [debug] QUERY OK source="settings" db=0.3ms idle=4.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:21:55.256 [debug] QUERY OK source="media_profiles" db=0.2ms idle=4.0ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:21:55.274 [info] Sent 200 in 233ms 13:21:55.661 [info] GET /sources/18/media/10362/edit 13:21:55.661 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "10362", "source_id" => "18"} Pipelines: [:browser] 13:21:55.662 [debug] QUERY OK source="media_items" db=0.4ms idle=408.5ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [10362] 13:21:55.664 [debug] QUERY OK source="settings" db=0.4ms queue=0.1ms idle=409.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:21:55.664 [debug] QUERY OK source="settings" db=0.2ms idle=409.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:21:55.665 [debug] QUERY OK source="settings" db=0.2ms idle=409.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:21:55.667 [info] Sent 200 in 6ms 13:21:56.013 [debug] Current batch of media processed. Will check again in 1000ms 13:21:56.122 [info] GET /sources/18/media/59088/edit 13:21:56.122 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "59088", "source_id" => "18"} Pipelines: [:browser] 13:21:56.124 [debug] QUERY OK source="media_items" db=1.2ms idle=609.8ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [59088] 13:21:56.125 [debug] QUERY OK source="settings" db=0.5ms queue=0.1ms idle=462.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:21:56.126 [debug] QUERY OK source="settings" db=0.4ms idle=461.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:21:56.128 [debug] QUERY OK source="settings" db=0.4ms queue=0.1ms idle=462.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:21:56.131 [info] Sent 200 in 9ms 13:21:56.269 [info] GET /sources/18 13:21:56.270 [debug] Processing with PinchflatWeb.Sources.SourceController.show/2 Parameters: %{"delete_files" => "true", "id" => "18"} Pipelines: [:browser] 13:21:56.272 [debug] QUERY OK source="sources" db=1.3ms idle=604.7ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [18] 13:21:56.272 [debug] QUERY OK source="media_profiles" db=0.3ms queue=0.1ms idle=148.4ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:21:56.275 [debug] QUERY OK source="tasks" db=1.7ms queue=0.1ms idle=147.7ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at" FROM "tasks" AS t0 INNER JOIN "oban_jobs" AS o1 ON o1."id" = t0."job_id" WHERE (t0."source_id" = ?) AND (o1."state" IN (?,?,?,?)) [18, "executing", "available", "scheduled", "retryable"] 13:21:56.276 [debug] QUERY OK source="oban_jobs" db=0.8ms idle=149.0ms SELECT o0."id", o0."state", o0."queue", o0."worker", o0."args", o0."meta", o0."tags", o0."errors", o0."attempt", o0."attempted_by", o0."max_attempts", o0."priority", o0."attempted_at", o0."cancelled_at", o0."completed_at", o0."discarded_at", o0."inserted_at", o0."scheduled_at", o0."id" FROM "oban_jobs" AS o0 WHERE (o0."id" IN (?,?)) [202959, 202177] 13:21:56.277 [debug] QUERY OK source="settings" db=0.5ms queue=0.1ms idle=148.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:21:56.278 [debug] QUERY OK source="settings" db=0.3ms idle=5.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:21:56.279 [debug] QUERY OK source="settings" db=0.6ms idle=5.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:21:56.280 [debug] QUERY OK source="sources" db=0.3ms idle=5.5ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [18] 13:21:56.283 [debug] QUERY OK source="media_items" db=2.2ms idle=4.9ms SELECT count(m0."id") FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [18] 13:21:56.286 [debug] QUERY OK source="media_items" db=2.5ms idle=6.5ms SELECT m0."id", m0."title", m0."uploaded_at", m0."prevent_download", m0."last_error" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) ORDER BY m0."uploaded_at" DESC LIMIT ? OFFSET ? [18, 10, 0] 13:21:56.288 [debug] QUERY OK source="sources" db=1.0ms idle=9.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [18] 13:21:56.290 [debug] QUERY OK source="media_items" db=2.4ms idle=9.1ms SELECT count(m0."id") FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND NOT (m0."media_filepath" IS NULL)) [18] 13:21:56.293 [debug] QUERY OK source="media_items" db=2.9ms idle=10.0ms SELECT m0."id", m0."title", m0."uploaded_at", m0."prevent_download", m0."last_error" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND NOT (m0."media_filepath" IS NULL)) ORDER BY m0."uploaded_at" DESC LIMIT ? OFFSET ? [18, 10, 0] 13:21:56.295 [debug] QUERY OK source="sources" db=0.3ms idle=11.4ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [18] 13:21:56.296 [debug] QUERY OK source="media_items" db=1.0ms idle=9.2ms SELECT count(m0."id") FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds"))))) [18] 13:21:56.304 [debug] QUERY OK source="media_items" db=7.2ms idle=8.8ms SELECT m0."id", m0."title", m0."uploaded_at", m0."prevent_download", m0."last_error" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds"))))) ORDER BY m0."uploaded_at" DESC LIMIT ? OFFSET ? [18, 10, 0] 13:21:56.306 [info] Sent 200 in 36ms 13:21:56.418 [info] GET /sources/3/media/59026 13:21:56.419 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "59026", "source_id" => "3"} Pipelines: [:browser] 13:21:56.420 [debug] QUERY OK source="media_items" db=0.5ms queue=0.1ms idle=129.0ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [59026] 13:21:56.422 [debug] QUERY OK source="tasks" db=0.4ms queue=0.1ms idle=127.5ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [59026] 13:21:56.422 [debug] QUERY OK source="sources" db=0.4ms idle=126.2ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [3] 13:21:56.423 [debug] QUERY OK source="settings" db=0.3ms idle=126.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:21:56.424 [debug] QUERY OK source="settings" db=0.3ms idle=119.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:21:56.425 [debug] QUERY OK source="settings" db=0.2ms idle=4.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:21:56.428 [debug] QUERY OK source="media_profiles" db=0.8ms idle=5.3ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:21:56.432 [info] Sent 200 in 13ms 13:21:56.569 [info] GET /sources/3/media/58991/edit 13:21:56.570 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "58991", "source_id" => "3"} Pipelines: [:browser] 13:21:56.572 [debug] QUERY OK source="media_items" db=0.8ms queue=0.1ms idle=148.1ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [58991] 13:21:56.574 [debug] QUERY OK source="settings" db=0.6ms queue=0.1ms idle=149.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:21:56.575 [debug] QUERY OK source="settings" db=0.4ms idle=149.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:21:56.577 [debug] QUERY OK source="settings" db=0.5ms queue=0.1ms idle=148.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:21:56.581 [info] Sent 200 in 11ms 13:21:57.014 [debug] Current batch of media processed. Will check again in 1000ms 13:21:58.015 [debug] Current batch of media processed. Will check again in 1000ms 13:21:59.016 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "✨ This talk was recorded at Lambda Days in June 2025. If you're curious about our upcoming event, check https://lambdadays.org ✨\n\nWhat is Functional Programming?\nFunctional programming is here to stay. While it hasn't taken over the world, many of today’s popular programming languages have at least borrowed some of its concepts.\n\nBut if someone asks you, \"What is functional programming?\"—would you be able to answer? Specifically, when can we call a language \"functional\"? Or, what exactly is \"functional style\"?\n\nIn this talk, we’ll explore the features that may define a language as functional, first by trying to visually identify \"functional\" code, and then trying to generalise our intuition. This covers topics all the way from higher-order functions, to capturing effects as values.\n\nNext, we'll introduce a couple of FP flavours, which might help to understand, why the definitions of FP that circulate in the virtual world sometimes seem so different.\n\nFinally, we'll try to judge which FP features bring the most value, and quantify a couple of mainstream languages in their \"functionfullness\".\n\nLet's keep in touch! Follow us on: \n💥BlueSky: https://bsky.app/profile/lambdadays.bsky.social\n💥LinkedIn: https://www.linkedin.com/company/lambda-days \n💥Facebook: https://www.facebook.com/lambdadays \n💥Mastodon: https://genserver.social/codesync \n💥Twitter: https://twitter.com/LambdaDays", "duration" => 2755, "filename" => "/downloads/CodeSync/Season 2025/s2025e120900 - What is Functional Programming? - Adam Warski | Lambda Days 2025.mp4", "id" => "pnZSff01FYQ", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=pnZSff01FYQ", "playlist_index" => 18, "timestamp" => 1765277919, "title" => "What is Functional Programming? - Adam Warski | Lambda Days 2025", "upload_date" => "20251209"} 13:21:59.018 [debug] QUERY OK source="sources" db=0.7ms queue=0.1ms idle=1204.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" IN (?)) [5] 13:21:59.019 [debug] QUERY OK source="sources" db=0.5ms queue=0.1ms idle=1205.5ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [5] 13:21:59.036 [debug] QUERY OK source="media_items" db=16.3ms queue=0.1ms idle=1206.5ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-12-09 10:58:39Z], 5] 13:21:59.042 [debug] QUERY OK source="media_items" db=4.1ms queue=0.1ms idle=1223.9ms INSERT INTO "media_items" AS m0 ("description","title","uuid","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","prevent_download","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["✨ This talk was recorded at Lambda Days in June 2025. If you're curious about our upcoming event, check https://lambdadays.org ✨\n\nWhat is Functional Programming?\nFunctional programming is here to stay. While it hasn't taken over the world, many of today’s popular programming languages have at least borrowed some of its concepts.\n\nBut if someone asks you, \"What is functional programming?\"—would you be able to answer? Specifically, when can we call a language \"functional\"? Or, what exactly is \"functional style\"?\n\nIn this talk, we’ll explore the features that may define a language as functional, first by trying to visually identify \"functional\" code, and then trying to generalise our intuition. This covers topics all the way from higher-order functions, to capturing effects as values.\n\nNext, we'll introduce a couple of FP flavours, which might help to understand, why the definitions of FP that circulate in the virtual world sometimes seem so different.\n\nFinally, we'll try to judge which FP features bring the most value, and quantify a couple of mainstream languages in their \"functionfullness\".\n\nLet's keep in touch! Follow us on: \n💥BlueSky: https://bsky.app/profile/lambdadays.bsky.social\n💥LinkedIn: https://www.linkedin.com/company/lambda-days \n💥Facebook: https://www.facebook.com/lambdadays \n💥Mastodon: https://genserver.social/codesync \n💥Twitter: https://twitter.com/LambdaDays", "What is Functional Programming? - Adam Warski | Lambda Days 2025", "970ac517-89d2-42a5-9e0d-fd08a9be38e7", 2755, false, "pnZSff01FYQ", "https://www.youtube.com/watch?v=pnZSff01FYQ", 18, "/downloads/CodeSync/Season 2025/s2025e120900 - What is Functional Programming? - Adam Warski | Lambda Days 2025.mp4", false, false, false, 5, [], 63, ~U[2025-12-09 10:58:39Z], ~U[2026-01-03 02:21:59Z], ~U[2026-01-03 02:21:59Z], "✨ This talk was recorded at Lambda Days in June 2025. If you're curious about our upcoming event, check https://lambdadays.org ✨\n\nWhat is Functional Programming?\nFunctional programming is here to stay. While it hasn't taken over the world, many of today’s popular programming languages have at least borrowed some of its concepts.\n\nBut if someone asks you, \"What is functional programming?\"—would you be able to answer? Specifically, when can we call a language \"functional\"? Or, what exactly is \"functional style\"?\n\nIn this talk, we’ll explore the features that may define a language as functional, first by trying to visually identify \"functional\" code, and then trying to generalise our intuition. This covers topics all the way from higher-order functions, to capturing effects as values.\n\nNext, we'll introduce a couple of FP flavours, which might help to understand, why the definitions of FP that circulate in the virtual world sometimes seem so different.\n\nFinally, we'll try to judge which FP features bring the most value, and quantify a couple of mainstream languages in their \"functionfullness\".\n\nLet's keep in touch! Follow us on: \n💥BlueSky: https://bsky.app/profile/lambdadays.bsky.social\n💥LinkedIn: https://www.linkedin.com/company/lambda-days \n💥Facebook: https://www.facebook.com/lambdadays \n💥Mastodon: https://genserver.social/codesync \n💥Twitter: https://twitter.com/LambdaDays", "What is Functional Programming? - Adam Warski | Lambda Days 2025", 2755, false, "pnZSff01FYQ", "https://www.youtube.com/watch?v=pnZSff01FYQ", "/downloads/CodeSync/Season 2025/s2025e120900 - What is Functional Programming? - Adam Warski | Lambda Days 2025.mp4", false, 5, ~U[2025-12-09 10:58:39Z]] 13:21:59.043 [debug] QUERY OK source="sources" db=1.0ms queue=0.1ms idle=522.1ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [5] 13:21:59.045 [debug] QUERY OK source="media_profiles" db=0.9ms queue=0.1ms idle=26.2ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:21:59.047 [debug] QUERY OK source="media_items" db=1.0ms queue=0.1ms idle=26.8ms SELECT 1 FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) LIMIT 1 [58611] 13:21:59.047 [debug] Current batch of media processed. Will check again in 1000ms 13:22:00.055 [debug] Current batch of media processed. Will check again in 1000ms 13:22:00.148 [info] {"source":"oban","duration":327,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 13:22:01.055 [debug] Current batch of media processed. Will check again in 1000ms 13:22:02.056 [debug] Current batch of media processed. Will check again in 1000ms 13:22:03.058 [debug] Current batch of media processed. Will check again in 1000ms 13:22:04.060 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "✨ This talk was recorded at Lambda Days in June 2025. If you're curious about our upcoming event, check https://lambdadays.org ✨\n\nProduction Haskell Regrets\n\nHindsight is 20/20, but in tech, it's often 20/200. In this talk, I'll share the biggest technological regrets from shipping a Haskell enterprise SaaS product over the past half-decade — technologies I embraced too soon, ideas I clung to for too long, and decisions that seemed right at the time but proved costly in the long run. Through real-world examples, I'll explore how biases, trends, and over-engineering can lead us astray, and how we can develop better instincts for long-term thinking in software. Whether you're a junior developer or a seasoned architect, this talk will help you avoid some of the mistakes I made—so you can make better ones of your own.\n\nLet's keep in touch! Follow us on: \n💥BlueSky: https://bsky.app/profile/lambdadays.bsky.social\n💥LinkedIn: https://www.linkedin.com/company/lambda-days \n💥Facebook: https://www.facebook.com/lambdadays \n💥Mastodon: https://genserver.social/codesync \n💥Twitter: https://twitter.com/LambdaDays", "duration" => 1233, "filename" => "/downloads/CodeSync/Season 2025/s2025e120900 - Production Haskell Regrets - Jezen Thomas | Lambda Days 2025.mp4", "id" => "mZDxVCb6fM0", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=mZDxVCb6fM0", "playlist_index" => 19, "timestamp" => 1765277919, "title" => "Production Haskell Regrets - Jezen Thomas | Lambda Days 2025", "upload_date" => "20251209"} 13:22:04.062 [debug] QUERY OK source="sources" db=1.0ms queue=0.2ms idle=1247.6ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" IN (?)) [5] 13:22:04.064 [debug] QUERY OK source="sources" db=0.9ms queue=0.1ms idle=1249.6ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [5] 13:22:04.081 [debug] QUERY OK source="media_items" db=16.1ms queue=0.3ms idle=1251.2ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-12-09 10:58:39Z], 5] 13:22:04.085 [debug] QUERY OK source="media_items" db=3.2ms queue=0.1ms idle=548.0ms INSERT INTO "media_items" AS m0 ("description","title","uuid","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","prevent_download","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["✨ This talk was recorded at Lambda Days in June 2025. If you're curious about our upcoming event, check https://lambdadays.org ✨\n\nProduction Haskell Regrets\n\nHindsight is 20/20, but in tech, it's often 20/200. In this talk, I'll share the biggest technological regrets from shipping a Haskell enterprise SaaS product over the past half-decade — technologies I embraced too soon, ideas I clung to for too long, and decisions that seemed right at the time but proved costly in the long run. Through real-world examples, I'll explore how biases, trends, and over-engineering can lead us astray, and how we can develop better instincts for long-term thinking in software. Whether you're a junior developer or a seasoned architect, this talk will help you avoid some of the mistakes I made—so you can make better ones of your own.\n\nLet's keep in touch! Follow us on: \n💥BlueSky: https://bsky.app/profile/lambdadays.bsky.social\n💥LinkedIn: https://www.linkedin.com/company/lambda-days \n💥Facebook: https://www.facebook.com/lambdadays \n💥Mastodon: https://genserver.social/codesync \n💥Twitter: https://twitter.com/LambdaDays", "Production Haskell Regrets - Jezen Thomas | Lambda Days 2025", "5a4737a6-ca82-48ee-a737-fcf9efc99f49", 1233, false, "mZDxVCb6fM0", "https://www.youtube.com/watch?v=mZDxVCb6fM0", 19, "/downloads/CodeSync/Season 2025/s2025e120900 - Production Haskell Regrets - Jezen Thomas | Lambda Days 2025.mp4", false, false, false, 5, [], 63, ~U[2025-12-09 10:58:39Z], ~U[2026-01-03 02:22:04Z], ~U[2026-01-03 02:22:04Z], "✨ This talk was recorded at Lambda Days in June 2025. If you're curious about our upcoming event, check https://lambdadays.org ✨\n\nProduction Haskell Regrets\n\nHindsight is 20/20, but in tech, it's often 20/200. In this talk, I'll share the biggest technological regrets from shipping a Haskell enterprise SaaS product over the past half-decade — technologies I embraced too soon, ideas I clung to for too long, and decisions that seemed right at the time but proved costly in the long run. Through real-world examples, I'll explore how biases, trends, and over-engineering can lead us astray, and how we can develop better instincts for long-term thinking in software. Whether you're a junior developer or a seasoned architect, this talk will help you avoid some of the mistakes I made—so you can make better ones of your own.\n\nLet's keep in touch! Follow us on: \n💥BlueSky: https://bsky.app/profile/lambdadays.bsky.social\n💥LinkedIn: https://www.linkedin.com/company/lambda-days \n💥Facebook: https://www.facebook.com/lambdadays \n💥Mastodon: https://genserver.social/codesync \n💥Twitter: https://twitter.com/LambdaDays", "Production Haskell Regrets - Jezen Thomas | Lambda Days 2025", 1233, false, "mZDxVCb6fM0", "https://www.youtube.com/watch?v=mZDxVCb6fM0", "/downloads/CodeSync/Season 2025/s2025e120900 - Production Haskell Regrets - Jezen Thomas | Lambda Days 2025.mp4", false, 5, ~U[2025-12-09 10:58:39Z]] 13:22:04.086 [debug] QUERY OK source="sources" db=0.5ms queue=0.1ms idle=273.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [5] 13:22:04.088 [debug] QUERY OK source="media_profiles" db=0.4ms queue=0.2ms idle=25.2ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:22:04.089 [debug] QUERY OK source="media_items" db=0.5ms idle=24.6ms SELECT 1 FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) LIMIT 1 [58613] 13:22:04.089 [debug] Current batch of media processed. Will check again in 1000ms 13:22:05.090 [debug] Current batch of media processed. Will check again in 1000ms 13:22:06.091 [debug] Current batch of media processed. Will check again in 1000ms 13:22:07.092 [debug] Current batch of media processed. Will check again in 1000ms 13:22:07.991 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/@CodeSync --simulate --skip-download --ignore-no-formats-error --no-warnings --output /downloads/CodeSync/Season %(upload_date>%Y)S/s%(upload_date>%Y)Se%(upload_date>%m%d)S00 - %(title)S.%(ext)S --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --break-on-existing --download-archive /tmp/pinchflat/data/e4/98/e4987a319ebd7e0cb5e4bd00080295e780aae2ed2fad9d404e4e9eaf5f3e2441.txt --print-to-file %(.{id,title,live_status,original_url,description,aspect_ratio,duration,upload_date,timestamp,playlist_index,filename})j /tmp/pinchflat/data/04/a6/04a6934811066a3f978041c4ae3a6f1362b4ea6f25ceaf21b45264ccda8b761b.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 101 with: 13:22:07.992 [debug] Gracefully stopping file follower 13:22:07.993 [debug] QUERY OK source="sources" db=0.5ms idle=443.3ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" IN (?)) [5] 13:22:07.994 [debug] QUERY OK source="sources" db=0.3ms idle=180.7ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [5] 13:22:08.002 [debug] QUERY OK source="media_items" db=8.5ms idle=181.2ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-12-26 15:30:20Z], 5] 13:22:08.005 [debug] QUERY OK source="media_items" db=1.7ms idle=190.3ms INSERT INTO "media_items" AS m0 ("description","title","uuid","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","prevent_download","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["✨This talk was recorded at ElixirConf EU 2025. If you're curious about our upcoming event, check https://elixirconf.eu ✨\n\nAbstract:\nIt's 2022 and our software feels like 1999. Our developer pace is fine but the habitat is crumbling, the technology is outdated. So in January 2023, we took the plunge and started building the new town over in Elixir Land. \nIn this talk, we share our approach to the technology shift and how we integrate this long-term goal into our business as usual, where we focus on modern software engineering with small incremental steps. We'll take a look at the challenges we have faced and are still facing, some of which are: communicating between old and new system, shifting to functional programming, making existing data usable in Ecto, building bridges and shifting traffic and last but not least doing this all without the user noticing. We'll also take a look at a real-life feature that went from ugly duckling to shiny new with the help of the strangler fig pattern.\n\nLet's keep in touch! Follow us on: \n💥 Bluesky: https://elixirconf.bsky.social\n💥 X: https://twitter.com/ElixirConfEU \n💥 Facebook: https://www.facebook.com/CodeSyncGlobal \n💥 LinkedIn: https://www.linkedin.com/company/code-sync\n💥 Mastodon: https://genserver.social/codesync", "Turn Old into New: Moving to Elixir Feature by Feature - Anita Ludermann | ElixirConf EU 2025", "f7dd9ccb-7db8-4f1c-b6a1-8b377051c8df", 1919, false, "CcUb7Ky2oSI", "https://www.youtube.com/watch?v=CcUb7Ky2oSI", 1, "/downloads/CodeSync/Season 2025/s2025e122600 - Turn Old into New: Moving to Elixir Feature by Feature - Anita Ludermann | ElixirConf EU 2025.mp4", false, false, false, 5, [], 98, ~U[2025-12-26 15:30:20Z], ~U[2026-01-03 02:22:08Z], ~U[2026-01-03 02:22:08Z], "✨This talk was recorded at ElixirConf EU 2025. If you're curious about our upcoming event, check https://elixirconf.eu ✨\n\nAbstract:\nIt's 2022 and our software feels like 1999. Our developer pace is fine but the habitat is crumbling, the technology is outdated. So in January 2023, we took the plunge and started building the new town over in Elixir Land. \nIn this talk, we share our approach to the technology shift and how we integrate this long-term goal into our business as usual, where we focus on modern software engineering with small incremental steps. We'll take a look at the challenges we have faced and are still facing, some of which are: communicating between old and new system, shifting to functional programming, making existing data usable in Ecto, building bridges and shifting traffic and last but not least doing this all without the user noticing. We'll also take a look at a real-life feature that went from ugly duckling to shiny new with the help of the strangler fig pattern.\n\nLet's keep in touch! Follow us on: \n💥 Bluesky: https://elixirconf.bsky.social\n💥 X: https://twitter.com/ElixirConfEU \n💥 Facebook: https://www.facebook.com/CodeSyncGlobal \n💥 LinkedIn: https://www.linkedin.com/company/code-sync\n💥 Mastodon: https://genserver.social/codesync", "Turn Old into New: Moving to Elixir Feature by Feature - Anita Ludermann | ElixirConf EU 2025", 1919, false, "CcUb7Ky2oSI", "https://www.youtube.com/watch?v=CcUb7Ky2oSI", "/downloads/CodeSync/Season 2025/s2025e122600 - Turn Old into New: Moving to Elixir Feature by Feature - Anita Ludermann | ElixirConf EU 2025.mp4", false, 5, ~U[2025-12-26 15:30:20Z]] 13:22:08.006 [debug] QUERY OK source="sources" db=0.3ms idle=192.7ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [5] 13:22:08.013 [debug] QUERY OK source="media_items" db=6.6ms queue=0.1ms idle=13.0ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-12-25 13:00:59Z], 5] 13:22:08.015 [debug] QUERY OK source="media_items" db=1.5ms idle=19.6ms INSERT INTO "media_items" AS m0 ("description","title","uuid","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","prevent_download","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["✨This talk was recorded at ElixirConf EU 2025. If you're curious about our upcoming event, check https://elixirconf.eu ✨\n\nAbstract:\nThis talk will discuss the ongoing development of Trellis, a fully open-source hardware platform built for Nerves. Think of it as an open-source Raspberry Pi, but designed to be easy to adapt to produce your own custom circuit boards for Nerves and Elixir. We’ll discuss the benefits of building custom hardware for your products, and how open source unlocks even more rapid prototyping for Nerves and Elixir in embedded device development. Finally, I won’t just talk about how customizable Trellis is, I will also show live just how easy it is to modify the designs to create a custom circuit board which can be assembled and shipped to you in two weeks.\n\nLet's keep in touch! Follow us on: \n💥 Bluesky: https://elixirconf.bsky.social\n💥 X: https://twitter.com/ElixirConfEU \n💥 Facebook: https://www.facebook.com/CodeSyncGlobal \n💥 LinkedIn: https://www.linkedin.com/company/code-sync\n💥 Mastodon: https://genserver.social/codesync", "Introducing Trellis: Open Source Hardware for Nerves - Gus Workman | ElixirConf EU 2025", "e85e820d-8ede-4ab3-8fbe-72335f4f413a", 1329, false, "XgMDTAKd7-4", "https://www.youtube.com/watch?v=XgMDTAKd7-4", 2, "/downloads/CodeSync/Season 2025/s2025e122500 - Introducing Trellis: Open Source Hardware for Nerves - Gus Workman | ElixirConf EU 2025.mp4", false, false, false, 5, [], 98, ~U[2025-12-25 13:00:59Z], ~U[2026-01-03 02:22:08Z], ~U[2026-01-03 02:22:08Z], "✨This talk was recorded at ElixirConf EU 2025. If you're curious about our upcoming event, check https://elixirconf.eu ✨\n\nAbstract:\nThis talk will discuss the ongoing development of Trellis, a fully open-source hardware platform built for Nerves. Think of it as an open-source Raspberry Pi, but designed to be easy to adapt to produce your own custom circuit boards for Nerves and Elixir. We’ll discuss the benefits of building custom hardware for your products, and how open source unlocks even more rapid prototyping for Nerves and Elixir in embedded device development. Finally, I won’t just talk about how customizable Trellis is, I will also show live just how easy it is to modify the designs to create a custom circuit board which can be assembled and shipped to you in two weeks.\n\nLet's keep in touch! Follow us on: \n💥 Bluesky: https://elixirconf.bsky.social\n💥 X: https://twitter.com/ElixirConfEU \n💥 Facebook: https://www.facebook.com/CodeSyncGlobal \n💥 LinkedIn: https://www.linkedin.com/company/code-sync\n💥 Mastodon: https://genserver.social/codesync", "Introducing Trellis: Open Source Hardware for Nerves - Gus Workman | ElixirConf EU 2025", 1329, false, "XgMDTAKd7-4", "https://www.youtube.com/watch?v=XgMDTAKd7-4", "/downloads/CodeSync/Season 2025/s2025e122500 - Introducing Trellis: Open Source Hardware for Nerves - Gus Workman | ElixirConf EU 2025.mp4", false, 5, ~U[2025-12-25 13:00:59Z]] 13:22:08.017 [debug] QUERY OK source="sources" db=1.6ms idle=13.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [5] 13:22:08.034 [debug] QUERY OK source="media_items" db=16.8ms idle=12.4ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-12-19 14:30:46Z], 5] 13:22:08.039 [debug] QUERY OK source="media_items" db=3.7ms queue=0.1ms idle=28.9ms INSERT INTO "media_items" AS m0 ("description","title","uuid","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","prevent_download","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["✨This talk was recorded at ElixirConf EU 2025. If you're curious about our upcoming event, check https://elixirconf.eu ✨\n\nAbstract:\nLet’s dive into the evolution of an Elixir backend application responsible for hotel online reservations.\nThis application started small as a minimum viable product (MVP), implementing a synchronous booking flow in the beginning. As the application and the product were growing, also some problems and limitations were faced, incremental steps were taken to improve the booking flow, initially with a simple asynchronous approach using Elixir built-in capabilities, until reaching an event-driven architecture to execute the different processes of the booking flow in a distributed way.\nThe final result made the entire booking process more reliable, increased the performance of the application, mitigated some issues and improved the customers’ experience.\n\nLet's keep in touch! Follow us on: \n💥 Bluesky: https://elixirconf.bsky.social\n💥 X: https://twitter.com/ElixirConfEU \n💥 Facebook: https://www.facebook.com/CodeSyncGlobal \n💥 LinkedIn: https://www.linkedin.com/company/code-sync\n💥 Mastodon: https://genserver.social/codesync", "Making Bookings Asynchronously - Fernando Hamasaki de Amorim & Rauan Assis | ElixirConf EU 2025", "441f4b63-bf0d-41f8-b6f6-b6416d1e2a2d", 2261, false, "lrn5BcKok8c", "https://www.youtube.com/watch?v=lrn5BcKok8c", 3, "/downloads/CodeSync/Season 2025/s2025e121900 - Making Bookings Asynchronously - Fernando Hamasaki de Amorim & Rauan Assis | ElixirConf EU 2025.mp4", false, false, false, 5, [], 98, ~U[2025-12-19 14:30:46Z], ~U[2026-01-03 02:22:08Z], ~U[2026-01-03 02:22:08Z], "✨This talk was recorded at ElixirConf EU 2025. If you're curious about our upcoming event, check https://elixirconf.eu ✨\n\nAbstract:\nLet’s dive into the evolution of an Elixir backend application responsible for hotel online reservations.\nThis application started small as a minimum viable product (MVP), implementing a synchronous booking flow in the beginning. As the application and the product were growing, also some problems and limitations were faced, incremental steps were taken to improve the booking flow, initially with a simple asynchronous approach using Elixir built-in capabilities, until reaching an event-driven architecture to execute the different processes of the booking flow in a distributed way.\nThe final result made the entire booking process more reliable, increased the performance of the application, mitigated some issues and improved the customers’ experience.\n\nLet's keep in touch! Follow us on: \n💥 Bluesky: https://elixirconf.bsky.social\n💥 X: https://twitter.com/ElixirConfEU \n💥 Facebook: https://www.facebook.com/CodeSyncGlobal \n💥 LinkedIn: https://www.linkedin.com/company/code-sync\n💥 Mastodon: https://genserver.social/codesync", "Making Bookings Asynchronously - Fernando Hamasaki de Amorim & Rauan Assis | ElixirConf EU 2025", 2261, false, "lrn5BcKok8c", "https://www.youtube.com/watch?v=lrn5BcKok8c", "/downloads/CodeSync/Season 2025/s2025e121900 - Making Bookings Asynchronously - Fernando Hamasaki de Amorim & Rauan Assis | ElixirConf EU 2025.mp4", false, 5, ~U[2025-12-19 14:30:46Z]] 13:22:08.041 [debug] QUERY OK source="sources" db=1.7ms idle=26.6ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [5] 13:22:08.058 [debug] QUERY OK source="media_items" db=16.8ms queue=0.1ms idle=26.7ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-12-18 14:00:05Z], 5] 13:22:08.063 [debug] QUERY OK source="media_items" db=3.3ms idle=42.0ms INSERT INTO "media_items" AS m0 ("description","title","uuid","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","prevent_download","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["✨This talk was recorded at ElixirConf EU 2025. If you're curious about our upcoming event, check https://elixirconf.eu ✨\n\nAbstract:\nLivebook is a collaborative web application underpinned by Phoenix LiveView and Erlang distribution. It has become a widely adopted tool within Elixir ecosystem, a subject of several talks, and a canvas for many more. In this talk we will have a look at a few implementation aspects of Livebook itself to understand how it leverages the platform.\n\nLet's keep in touch! Follow us on: \n💥 Bluesky: https://elixirconf.bsky.social\n💥 X: https://twitter.com/ElixirConfEU \n💥 Facebook: https://www.facebook.com/CodeSyncGlobal \n💥 LinkedIn: https://www.linkedin.com/company/code-sync\n💥 Mastodon: https://genserver.social/codesync", "Livebook Behind the Cover - Jonatan Kłosko | ElixirConf EU 2025 | ElixirConf EU 2025", "26a66fde-cf05-4807-9ec0-c6c491b76839", 2193, false, "2GUvk_BNJRE", "https://www.youtube.com/watch?v=2GUvk_BNJRE", 4, "/downloads/CodeSync/Season 2025/s2025e121800 - Livebook Behind the Cover - Jonatan Kłosko | ElixirConf EU 2025 | ElixirConf EU 2025.mp4", false, false, false, 5, [], 98, ~U[2025-12-18 14:00:05Z], ~U[2026-01-03 02:22:08Z], ~U[2026-01-03 02:22:08Z], "✨This talk was recorded at ElixirConf EU 2025. If you're curious about our upcoming event, check https://elixirconf.eu ✨\n\nAbstract:\nLivebook is a collaborative web application underpinned by Phoenix LiveView and Erlang distribution. It has become a widely adopted tool within Elixir ecosystem, a subject of several talks, and a canvas for many more. In this talk we will have a look at a few implementation aspects of Livebook itself to understand how it leverages the platform.\n\nLet's keep in touch! Follow us on: \n💥 Bluesky: https://elixirconf.bsky.social\n💥 X: https://twitter.com/ElixirConfEU \n💥 Facebook: https://www.facebook.com/CodeSyncGlobal \n💥 LinkedIn: https://www.linkedin.com/company/code-sync\n💥 Mastodon: https://genserver.social/codesync", "Livebook Behind the Cover - Jonatan Kłosko | ElixirConf EU 2025 | ElixirConf EU 2025", 2193, false, "2GUvk_BNJRE", "https://www.youtube.com/watch?v=2GUvk_BNJRE", "/downloads/CodeSync/Season 2025/s2025e121800 - Livebook Behind the Cover - Jonatan Kłosko | ElixirConf EU 2025 | ElixirConf EU 2025.mp4", false, 5, ~U[2025-12-18 14:00:05Z]] 13:22:08.066 [debug] QUERY OK source="sources" db=1.8ms queue=0.1ms idle=29.6ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [5] 13:22:08.083 [debug] QUERY OK source="media_items" db=16.4ms idle=27.4ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-12-11 08:24:16Z], 5] 13:22:08.088 [debug] QUERY OK source="media_items" db=4.1ms queue=0.1ms idle=42.3ms INSERT INTO "media_items" AS m0 ("description","title","uuid","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","prevent_download","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["✨This talk was recorded at ElixirConf EU 2025. If you're curious about our upcoming event, check https://elixirconf.eu ✨\n\nAbstract:\nLiveView revolutionized web development by enabling server-rendered, dynamic UI. Just as our applications grow in complexity, we often find ourselves needing more sophisticated client-side interactions. While LiveView excels at server-driven UI, managing complex client-side state can become challenging.\nThis talk explores how integrating a frontend library with LiveView offers the best of both worlds: LiveView's powerful server-side model combined with the rich ecosystem of modern frontend frameworks. Using LiveVue as a case study, we'll demonstrate practical patterns for managing client-state, leveraging existing frontend components, and maintaining a clean architecture. You'll learn when and how to introduce a frontend library to complement LiveView, not replace it.\n\nLet's keep in touch! Follow us on: \n💥 Bluesky: https://elixirconf.bsky.social\n💥 X: https://twitter.com/ElixirConfEU \n💥 Facebook: https://www.facebook.com/CodeSyncGlobal \n💥 LinkedIn: https://www.linkedin.com/company/code-sync\n💥 Mastodon: https://genserver.social/codesync", "Why Combining LiveView and a Frontend Library is a Great Idea - Jakub Skałecki | ElixirConf EU 2025", "fd6bf10e-680f-4209-a88e-6db3759d5350", 2340, false, "oouX5lxf48k", "https://www.youtube.com/watch?v=oouX5lxf48k", 5, "/downloads/CodeSync/Season 2025/s2025e121100 - Why Combining LiveView and a Frontend Library is a Great Idea - Jakub Skałecki | ElixirConf EU 2025.mp4", false, false, false, 5, [], 98, ~U[2025-12-11 08:24:16Z], ~U[2026-01-03 02:22:08Z], ~U[2026-01-03 02:22:08Z], "✨This talk was recorded at ElixirConf EU 2025. If you're curious about our upcoming event, check https://elixirconf.eu ✨\n\nAbstract:\nLiveView revolutionized web development by enabling server-rendered, dynamic UI. Just as our applications grow in complexity, we often find ourselves needing more sophisticated client-side interactions. While LiveView excels at server-driven UI, managing complex client-side state can become challenging.\nThis talk explores how integrating a frontend library with LiveView offers the best of both worlds: LiveView's powerful server-side model combined with the rich ecosystem of modern frontend frameworks. Using LiveVue as a case study, we'll demonstrate practical patterns for managing client-state, leveraging existing frontend components, and maintaining a clean architecture. You'll learn when and how to introduce a frontend library to complement LiveView, not replace it.\n\nLet's keep in touch! Follow us on: \n💥 Bluesky: https://elixirconf.bsky.social\n💥 X: https://twitter.com/ElixirConfEU \n💥 Facebook: https://www.facebook.com/CodeSyncGlobal \n💥 LinkedIn: https://www.linkedin.com/company/code-sync\n💥 Mastodon: https://genserver.social/codesync", "Why Combining LiveView and a Frontend Library is a Great Idea - Jakub Skałecki | ElixirConf EU 2025", 2340, false, "oouX5lxf48k", "https://www.youtube.com/watch?v=oouX5lxf48k", "/downloads/CodeSync/Season 2025/s2025e121100 - Why Combining LiveView and a Frontend Library is a Great Idea - Jakub Skałecki | ElixirConf EU 2025.mp4", false, 5, ~U[2025-12-11 08:24:16Z]] 13:22:08.091 [debug] QUERY OK source="sources" db=1.8ms queue=0.1ms idle=30.8ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [5] 13:22:08.109 [debug] QUERY OK source="media_items" db=16.7ms queue=0.2ms idle=29.2ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-12-09 14:10:32Z], 5] 13:22:08.115 [debug] QUERY OK source="media_items" db=4.2ms queue=0.1ms idle=44.2ms INSERT INTO "media_items" AS m0 ("description","title","uuid","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","prevent_download","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["✨ This talk was recorded at Lambda Days in June 2025. If you're curious about our upcoming event, check https://lambdadays.org ✨\n\nScala and TypeScript Synergy: Developing a real-time collaborative text editor\n\nHave you ever wondered what it takes to combine the power of Scala with the flexibility of TypeScript to create a secure, real-time collaborative text editor—similar to Google Docs, but built for high-security environments? Imagine a scenario where military teams need to simultaneously update critical text documents during a mission while ensuring airtight security in air-gapped deployments.\n\nIn this presentation, I will demonstrate how we leveraged the strengths of Scala and TypeScript to develop a collaborative text editor that meets the strictest standards for security, performance, and real-time collaboration. I will dive deep into the technical architecture, powered by advanced operational transformation algorithms, which enables multi-user editing without conflicts. Additionally, I'll share how we layered robust security measures on top of the solution to ensure it meets military-grade standards while maintaining seamless performance in isolated networks.\n\nLet's keep in touch! Follow us on: \n💥BlueSky: https://bsky.app/profile/lambdadays.bsky.social\n💥LinkedIn: https://www.linkedin.com/company/lambda-days \n💥Facebook: https://www.facebook.com/lambdadays \n💥Mastodon: https://genserver.social/codesync \n💥Twitter: https://twitter.com/LambdaDays", "Scala and TypeScript Synergy: Developing a (...) text editor - Mihaela Gheorghe-Roman | LambdaDays25", "0d8d4709-f5fd-42ff-8a18-d5f7b10f632d", 2791, false, "dLTPYHSGxYk", "https://www.youtube.com/watch?v=dLTPYHSGxYk", 6, "/downloads/CodeSync/Season 2025/s2025e120900 - Scala and TypeScript Synergy: Developing a (...) text editor - Mihaela Gheorghe-Roman | LambdaDays25.mp4", false, false, false, 5, [], 63, ~U[2025-12-09 14:10:32Z], ~U[2026-01-03 02:22:08Z], ~U[2026-01-03 02:22:08Z], "✨ This talk was recorded at Lambda Days in June 2025. If you're curious about our upcoming event, check https://lambdadays.org ✨\n\nScala and TypeScript Synergy: Developing a real-time collaborative text editor\n\nHave you ever wondered what it takes to combine the power of Scala with the flexibility of TypeScript to create a secure, real-time collaborative text editor—similar to Google Docs, but built for high-security environments? Imagine a scenario where military teams need to simultaneously update critical text documents during a mission while ensuring airtight security in air-gapped deployments.\n\nIn this presentation, I will demonstrate how we leveraged the strengths of Scala and TypeScript to develop a collaborative text editor that meets the strictest standards for security, performance, and real-time collaboration. I will dive deep into the technical architecture, powered by advanced operational transformation algorithms, which enables multi-user editing without conflicts. Additionally, I'll share how we layered robust security measures on top of the solution to ensure it meets military-grade standards while maintaining seamless performance in isolated networks.\n\nLet's keep in touch! Follow us on: \n💥BlueSky: https://bsky.app/profile/lambdadays.bsky.social\n💥LinkedIn: https://www.linkedin.com/company/lambda-days \n💥Facebook: https://www.facebook.com/lambdadays \n💥Mastodon: https://genserver.social/codesync \n💥Twitter: https://twitter.com/LambdaDays", "Scala and TypeScript Synergy: Developing a (...) text editor - Mihaela Gheorghe-Roman | LambdaDays25", 2791, false, "dLTPYHSGxYk", "https://www.youtube.com/watch?v=dLTPYHSGxYk", "/downloads/CodeSync/Season 2025/s2025e120900 - Scala and TypeScript Synergy: Developing a (...) text editor - Mihaela Gheorghe-Roman | LambdaDays25.mp4", false, 5, ~U[2025-12-09 14:10:32Z]] 13:22:08.118 [debug] QUERY OK source="sources" db=1.9ms queue=0.2ms idle=33.1ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [5] 13:22:08.136 [debug] QUERY OK source="media_items" db=17.2ms idle=30.4ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-12-09 14:09:26Z], 5] 13:22:08.140 [debug] QUERY OK source="media_items" db=2.7ms queue=0.1ms idle=45.2ms INSERT INTO "media_items" AS m0 ("description","title","uuid","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","prevent_download","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["✨ This talk was recorded at Lambda Days in June 2025. If you're curious about our upcoming event, check https://lambdadays.org ✨\n\nAutomating Type-Driven Development with (Co)algebras\n\nTypes matter not only for preventing runtime errors but also for guiding implementation. In some cases, they even provide enough information to automatically derive fully verified code from the signature. This derivation proceeds by pure logical reasoning —no need for LLMs here!— in accordance with the well-known Curry-Howard correspondence. This talk will explore this logical process through the lens of recursion schemes. Specifically, the search space for proofs unfolds from the initial proof sequent, while term extraction emerges from folding over the proof tree. For finite search spaces, hylomorphisms offer a brute-force algorithm, while other algorithms require specialized traversals of the search space. Finally, we will outline how to exploit Scala 3 macros and the tagless-final approach to bring these (co)algebraic techniques into practice!\n\nLet's keep in touch! Follow us on: \n💥BlueSky: https://bsky.app/profile/lambdadays.bsky.social\n💥LinkedIn: https://www.linkedin.com/company/lambda-days \n💥Facebook: https://www.facebook.com/lambdadays \n💥Mastodon: https://genserver.social/codesync \n💥Twitter: https://twitter.com/LambdaDays", "Automating Type-Driven Development with (Co)algebras - Juan Manuel Serrano Hidalgo | Lambda Days 25", "603dd6c8-9795-416c-b122-4eef00aee7ed", 1358, false, "7F9tH8T4TC4", "https://www.youtube.com/watch?v=7F9tH8T4TC4", 7, "/downloads/CodeSync/Season 2025/s2025e120900 - Automating Type-Driven Development with (Co)algebras - Juan Manuel Serrano Hidalgo | Lambda Days 25.mp4", false, false, false, 5, [], 63, ~U[2025-12-09 14:09:26Z], ~U[2026-01-03 02:22:08Z], ~U[2026-01-03 02:22:08Z], "✨ This talk was recorded at Lambda Days in June 2025. If you're curious about our upcoming event, check https://lambdadays.org ✨\n\nAutomating Type-Driven Development with (Co)algebras\n\nTypes matter not only for preventing runtime errors but also for guiding implementation. In some cases, they even provide enough information to automatically derive fully verified code from the signature. This derivation proceeds by pure logical reasoning —no need for LLMs here!— in accordance with the well-known Curry-Howard correspondence. This talk will explore this logical process through the lens of recursion schemes. Specifically, the search space for proofs unfolds from the initial proof sequent, while term extraction emerges from folding over the proof tree. For finite search spaces, hylomorphisms offer a brute-force algorithm, while other algorithms require specialized traversals of the search space. Finally, we will outline how to exploit Scala 3 macros and the tagless-final approach to bring these (co)algebraic techniques into practice!\n\nLet's keep in touch! Follow us on: \n💥BlueSky: https://bsky.app/profile/lambdadays.bsky.social\n💥LinkedIn: https://www.linkedin.com/company/lambda-days \n💥Facebook: https://www.facebook.com/lambdadays \n💥Mastodon: https://genserver.social/codesync \n💥Twitter: https://twitter.com/LambdaDays", "Automating Type-Driven Development with (Co)algebras - Juan Manuel Serrano Hidalgo | Lambda Days 25", 1358, false, "7F9tH8T4TC4", "https://www.youtube.com/watch?v=7F9tH8T4TC4", "/downloads/CodeSync/Season 2025/s2025e120900 - Automating Type-Driven Development with (Co)algebras - Juan Manuel Serrano Hidalgo | Lambda Days 25.mp4", false, 5, ~U[2025-12-09 14:09:26Z]] 13:22:08.142 [debug] QUERY OK source="sources" db=1.3ms queue=0.2ms idle=32.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [5] 13:22:08.162 [debug] QUERY OK source="media_items" db=18.5ms queue=0.3ms idle=28.4ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-12-09 14:08:28Z], 5] 13:22:08.167 [debug] QUERY OK source="media_items" db=4.1ms queue=0.1ms idle=44.6ms INSERT INTO "media_items" AS m0 ("description","title","uuid","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","prevent_download","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["✨ This talk was recorded at Lambda Days in June 2025. If you're curious about our upcoming event, check https://lambdadays.org ✨\n\nPanel discussion: Learning How to Learn\nFour friends, brought together by Lambda Days, reunited at conferences across Europe and the U.S., share their stories of learning, teaching, and growing in functional programming. With diverse backgrounds - formal education, self-taught, and mentorship - they explore how different paths shape how we code, collaborate, and teach others. Join us for a lively conversation full of insights, practical tips, and reflections on building skills, friendships, and inclusive learning spaces in the functional programming community.\n\nLet's keep in touch! Follow us on: \n💥BlueSky: https://bsky.app/profile/lambdadays.bsky.social\n💥LinkedIn: https://www.linkedin.com/company/lambda-days \n💥Facebook: https://www.facebook.com/lambdadays \n💥Mastodon: https://genserver.social/codesync \n💥Twitter: https://twitter.com/LambdaDays", "Learning How to Learn - Carol Silva, Jordan Miller, Kimberley Huizing & Wendy Randolph |LambdaDays25", "3b42c15b-675a-4e8d-b0aa-8823e39ee909", 2351, false, "6Oj2zkQ5XX8", "https://www.youtube.com/watch?v=6Oj2zkQ5XX8", 8, "/downloads/CodeSync/Season 2025/s2025e120900 - Learning How to Learn - Carol Silva, Jordan Miller, Kimberley Huizing & Wendy Randolph |LambdaDays25.mp4", false, false, false, 5, [], 63, ~U[2025-12-09 14:08:28Z], ~U[2026-01-03 02:22:08Z], ~U[2026-01-03 02:22:08Z], "✨ This talk was recorded at Lambda Days in June 2025. If you're curious about our upcoming event, check https://lambdadays.org ✨\n\nPanel discussion: Learning How to Learn\nFour friends, brought together by Lambda Days, reunited at conferences across Europe and the U.S., share their stories of learning, teaching, and growing in functional programming. With diverse backgrounds - formal education, self-taught, and mentorship - they explore how different paths shape how we code, collaborate, and teach others. Join us for a lively conversation full of insights, practical tips, and reflections on building skills, friendships, and inclusive learning spaces in the functional programming community.\n\nLet's keep in touch! Follow us on: \n💥BlueSky: https://bsky.app/profile/lambdadays.bsky.social\n💥LinkedIn: https://www.linkedin.com/company/lambda-days \n💥Facebook: https://www.facebook.com/lambdadays \n💥Mastodon: https://genserver.social/codesync \n💥Twitter: https://twitter.com/LambdaDays", "Learning How to Learn - Carol Silva, Jordan Miller, Kimberley Huizing & Wendy Randolph |LambdaDays25", 2351, false, "6Oj2zkQ5XX8", "https://www.youtube.com/watch?v=6Oj2zkQ5XX8", "/downloads/CodeSync/Season 2025/s2025e120900 - Learning How to Learn - Carol Silva, Jordan Miller, Kimberley Huizing & Wendy Randolph |LambdaDays25.mp4", false, 5, ~U[2025-12-09 14:08:28Z]] 13:22:08.170 [debug] QUERY OK source="sources" db=2.0ms queue=0.2ms idle=32.3ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [5] 13:22:08.187 [debug] QUERY OK source="media_items" db=16.7ms idle=31.2ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-12-09 14:04:06Z], 5] 13:22:08.193 [debug] QUERY OK source="media_items" db=3.8ms queue=0.2ms idle=46.0ms INSERT INTO "media_items" AS m0 ("description","title","uuid","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","prevent_download","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["✨ This talk was recorded at Lambda Days in June 2025. If you're curious about our upcoming event, check https://lambdadays.org ✨\n\nFrom Clojure to Elixir: Leveraging Functional Programming for Scalable, Sustainable Web Apps\n\nClojure and Elixir each offer unique approaches to building scalable web apps. I’ll walk you through the benefits and trials of using Clojure and then Elixir to build the exact same web app. Clojure offers flexibility but requires careful stack decisions, while Elixir’s Phoenix framework offers an opinionated, plug-and-play experience. After walking through both applications, you’ll get a better idea of which one appeals to you more.\n\nLet's keep in touch! Follow us on: \n💥BlueSky: https://bsky.app/profile/lambdadays.bsky.social\n💥LinkedIn: https://www.linkedin.com/company/lambda-days \n💥Facebook: https://www.facebook.com/lambdadays \n💥Mastodon: https://genserver.social/codesync \n💥Twitter: https://twitter.com/LambdaDays", "Leveraging Functional Programming for Scalable, Sustainable Web Apps- Wendy Randolph |Lambda Days 25", "6724a5d6-07ae-43bc-a0e8-4c44a5588743", 958, false, "-Dhv8yx30Fw", "https://www.youtube.com/watch?v=-Dhv8yx30Fw", 9, "/downloads/CodeSync/Season 2025/s2025e120900 - Leveraging Functional Programming for Scalable, Sustainable Web Apps- Wendy Randolph |Lambda Days 25.mp4", false, false, false, 5, [], 63, ~U[2025-12-09 14:04:06Z], ~U[2026-01-03 02:22:08Z], ~U[2026-01-03 02:22:08Z], "✨ This talk was recorded at Lambda Days in June 2025. If you're curious about our upcoming event, check https://lambdadays.org ✨\n\nFrom Clojure to Elixir: Leveraging Functional Programming for Scalable, Sustainable Web Apps\n\nClojure and Elixir each offer unique approaches to building scalable web apps. I’ll walk you through the benefits and trials of using Clojure and then Elixir to build the exact same web app. Clojure offers flexibility but requires careful stack decisions, while Elixir’s Phoenix framework offers an opinionated, plug-and-play experience. After walking through both applications, you’ll get a better idea of which one appeals to you more.\n\nLet's keep in touch! Follow us on: \n💥BlueSky: https://bsky.app/profile/lambdadays.bsky.social\n💥LinkedIn: https://www.linkedin.com/company/lambda-days \n💥Facebook: https://www.facebook.com/lambdadays \n💥Mastodon: https://genserver.social/codesync \n💥Twitter: https://twitter.com/LambdaDays", "Leveraging Functional Programming for Scalable, Sustainable Web Apps- Wendy Randolph |Lambda Days 25", 958, false, "-Dhv8yx30Fw", "https://www.youtube.com/watch?v=-Dhv8yx30Fw", "/downloads/CodeSync/Season 2025/s2025e120900 - Leveraging Functional Programming for Scalable, Sustainable Web Apps- Wendy Randolph |Lambda Days 25.mp4", false, 5, ~U[2025-12-09 14:04:06Z]] 13:22:08.195 [debug] QUERY OK source="sources" db=1.4ms queue=0.1ms idle=32.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [5] 13:22:08.205 [debug] QUERY OK source="media_items" db=9.4ms queue=0.2ms idle=28.9ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-12-09 14:03:37Z], 5] 13:22:08.214 [debug] QUERY OK source="media_items" db=6.5ms queue=0.1ms idle=36.1ms INSERT INTO "media_items" AS m0 ("description","title","uuid","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","prevent_download","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["✨ This talk was recorded at Lambda Days in June 2025. If you're curious about our upcoming event, check https://lambdadays.org ✨\n\nGoing functional and immutable: Refactoring solution with 30k+ loc from C# to F#\n\nOur employee roster scheduling optimization solution was gradually built in C# based on the needs of particular customers. The whole data processing and optimization procedure resembles a functional pipeline, therefore F# was introduced as natural choice for some parts. After 10 years of development the solution reached a point of C#-F# interop mess and it was time to tidy it up.\n\nIn my talk I'll guide you through our process of eliminating side-effect bugs by transition to data representation interface implemented by F# immutable records while relying on unit tests based on real production scenarios.\n\nLet's keep in touch! Follow us on: \n💥BlueSky: https://bsky.app/profile/lambdadays.bsky.social\n💥LinkedIn: https://www.linkedin.com/company/lambda-days \n💥Facebook: https://www.facebook.com/lambdadays \n💥Mastodon: https://genserver.social/codesync \n💥Twitter: https://twitter.com/LambdaDays", "Going functional and immutable: Refactoring solution (...) from C# to F# -Daniel Ondus |LambdaDays25", "fbb66ee1-ba94-4963-96f3-5f9b157117d6", 1158, false, "GQ3pvhhewEM", "https://www.youtube.com/watch?v=GQ3pvhhewEM", 10, "/downloads/CodeSync/Season 2025/s2025e120900 - Going functional and immutable: Refactoring solution (...) from C# to F# -Daniel Ondus |LambdaDays25.mp4", false, false, false, 5, [], 63, ~U[2025-12-09 14:03:37Z], ~U[2026-01-03 02:22:08Z], ~U[2026-01-03 02:22:08Z], "✨ This talk was recorded at Lambda Days in June 2025. If you're curious about our upcoming event, check https://lambdadays.org ✨\n\nGoing functional and immutable: Refactoring solution with 30k+ loc from C# to F#\n\nOur employee roster scheduling optimization solution was gradually built in C# based on the needs of particular customers. The whole data processing and optimization procedure resembles a functional pipeline, therefore F# was introduced as natural choice for some parts. After 10 years of development the solution reached a point of C#-F# interop mess and it was time to tidy it up.\n\nIn my talk I'll guide you through our process of eliminating side-effect bugs by transition to data representation interface implemented by F# immutable records while relying on unit tests based on real production scenarios.\n\nLet's keep in touch! Follow us on: \n💥BlueSky: https://bsky.app/profile/lambdadays.bsky.social\n💥LinkedIn: https://www.linkedin.com/company/lambda-days \n💥Facebook: https://www.facebook.com/lambdadays \n💥Mastodon: https://genserver.social/codesync \n💥Twitter: https://twitter.com/LambdaDays", "Going functional and immutable: Refactoring solution (...) from C# to F# -Daniel Ondus |LambdaDays25", 1158, false, "GQ3pvhhewEM", "https://www.youtube.com/watch?v=GQ3pvhhewEM", "/downloads/CodeSync/Season 2025/s2025e120900 - Going functional and immutable: Refactoring solution (...) from C# to F# -Daniel Ondus |LambdaDays25.mp4", false, 5, ~U[2025-12-09 14:03:37Z]] 13:22:08.217 [debug] QUERY OK source="sources" db=1.9ms queue=0.2ms idle=27.3ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [5] 13:22:08.234 [debug] QUERY OK source="media_items" db=16.6ms queue=0.1ms idle=24.8ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-12-09 14:02:36Z], 5] 13:22:08.240 [debug] QUERY OK source="media_items" db=4.4ms queue=0.1ms idle=39.7ms INSERT INTO "media_items" AS m0 ("description","title","uuid","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","prevent_download","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["✨ This talk was recorded at Lambda Days in June 2025. If you're curious about our upcoming event, check https://lambdadays.org ✨\n\nLocal-First App Development with Event Sourcing: A Functional Approach in Kotlin\n\nIn an increasingly connected world, applications often rely on constant internet access. But what happens when connectivity is unreliable or expensive? Local-first app development focuses on maintaining local state to ensure reliable and seamless offline experiences.\n\nThis talk explores how functional programming patterns, event sourcing, and Kotlin enable scalable and resilient local-first applications. Using EIDU’s learning platform as a case study — an educational app used in low and middle-income countries — we will showcase how event-driven architectures support offline-first experiences while maintaining strong consistency when syncing with the cloud.\n\nLet's keep in touch! Follow us on: \n💥BlueSky: https://bsky.app/profile/lambdadays.bsky.social\n💥LinkedIn: https://www.linkedin.com/company/lambda-days \n💥Facebook: https://www.facebook.com/lambdadays \n💥Mastodon: https://genserver.social/codesync \n💥Twitter: https://twitter.com/LambdaDays", "Local-First App Development with Event Sourcing: (...) in Kotlin -Merlin Pahic |LambdaDays25", "578b3ddd-a4e4-46a1-8fde-aa8d2cb84d72", 1320, false, "w2Ug4WRUHbw", "https://www.youtube.com/watch?v=w2Ug4WRUHbw", 11, "/downloads/CodeSync/Season 2025/s2025e120900 - Local-First App Development with Event Sourcing: (...) in Kotlin -Merlin Pahic |LambdaDays25.mp4", false, false, false, 5, [], 63, ~U[2025-12-09 14:02:36Z], ~U[2026-01-03 02:22:08Z], ~U[2026-01-03 02:22:08Z], "✨ This talk was recorded at Lambda Days in June 2025. If you're curious about our upcoming event, check https://lambdadays.org ✨\n\nLocal-First App Development with Event Sourcing: A Functional Approach in Kotlin\n\nIn an increasingly connected world, applications often rely on constant internet access. But what happens when connectivity is unreliable or expensive? Local-first app development focuses on maintaining local state to ensure reliable and seamless offline experiences.\n\nThis talk explores how functional programming patterns, event sourcing, and Kotlin enable scalable and resilient local-first applications. Using EIDU’s learning platform as a case study — an educational app used in low and middle-income countries — we will showcase how event-driven architectures support offline-first experiences while maintaining strong consistency when syncing with the cloud.\n\nLet's keep in touch! Follow us on: \n💥BlueSky: https://bsky.app/profile/lambdadays.bsky.social\n💥LinkedIn: https://www.linkedin.com/company/lambda-days \n💥Facebook: https://www.facebook.com/lambdadays \n💥Mastodon: https://genserver.social/codesync \n💥Twitter: https://twitter.com/LambdaDays", "Local-First App Development with Event Sourcing: (...) in Kotlin -Merlin Pahic |LambdaDays25", 1320, false, "w2Ug4WRUHbw", "https://www.youtube.com/watch?v=w2Ug4WRUHbw", "/downloads/CodeSync/Season 2025/s2025e120900 - Local-First App Development with Event Sourcing: (...) in Kotlin -Merlin Pahic |LambdaDays25.mp4", false, 5, ~U[2025-12-09 14:02:36Z]] 13:22:08.243 [debug] QUERY OK source="sources" db=1.7ms queue=0.1ms idle=35.6ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [5] 13:22:08.261 [debug] QUERY OK source="media_items" db=17.4ms queue=0.1ms idle=30.2ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-12-09 11:25:47Z], 5] 13:22:08.265 [debug] QUERY OK source="media_items" db=2.1ms queue=0.1ms idle=44.9ms INSERT INTO "media_items" AS m0 ("description","title","uuid","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","prevent_download","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["✨ This talk was recorded at Lambda Days in June 2025. If you're curious about our upcoming event, check https://lambdadays.org ✨\n\nYour Website as a Function From URL to HTML\n\nBuilding websites seems straightforward. You pick a static site generator and start writing content. However, these websites quickly grow into full-blown software projects. Suddenly, your SSG – its rigid template system, scattered configuration and ad-hoc Markdown – is holding you back for its lack of proper abstraction mechanisms.\n\nIn this talk, we start fresh. Our design approach is driven by one simple insight: Static websites are just functions mapping URLs to HTML. This marks the beginning of our journey in developing our own SSG. In the end we arrive at a bespoke domain-specific language in OCaml.\n\nWhile this exploration may sound theoretical – or even playful – it has substantial practical implications. By treating our website as a function, we can embrace robust engineering practices: clearly separating domain logic from presentation, following the single-responsibility principle, reducing coupling, and ensuring cohesion.\n\nLet's keep in touch! Follow us on: \n💥BlueSky: https://bsky.app/profile/lambdadays.bsky.social\n💥LinkedIn: https://www.linkedin.com/company/lambda-days \n💥Facebook: https://www.facebook.com/lambdadays \n💥Mastodon: https://genserver.social/codesync \n💥Twitter: https://twitter.com/LambdaDays", "Your Website as a Function From URL to HTML - Markus Schlegel | Lambda Days 2025", "588a09f9-a05c-450d-aec9-f4ed99fafae5", 1183, false, "iU5RNr4F--g", "https://www.youtube.com/watch?v=iU5RNr4F--g", 12, "/downloads/CodeSync/Season 2025/s2025e120900 - Your Website as a Function From URL to HTML - Markus Schlegel | Lambda Days 2025.mp4", false, false, false, 5, [], 63, ~U[2025-12-09 11:25:47Z], ~U[2026-01-03 02:22:08Z], ~U[2026-01-03 02:22:08Z], "✨ This talk was recorded at Lambda Days in June 2025. If you're curious about our upcoming event, check https://lambdadays.org ✨\n\nYour Website as a Function From URL to HTML\n\nBuilding websites seems straightforward. You pick a static site generator and start writing content. However, these websites quickly grow into full-blown software projects. Suddenly, your SSG – its rigid template system, scattered configuration and ad-hoc Markdown – is holding you back for its lack of proper abstraction mechanisms.\n\nIn this talk, we start fresh. Our design approach is driven by one simple insight: Static websites are just functions mapping URLs to HTML. This marks the beginning of our journey in developing our own SSG. In the end we arrive at a bespoke domain-specific language in OCaml.\n\nWhile this exploration may sound theoretical – or even playful – it has substantial practical implications. By treating our website as a function, we can embrace robust engineering practices: clearly separating domain logic from presentation, following the single-responsibility principle, reducing coupling, and ensuring cohesion.\n\nLet's keep in touch! Follow us on: \n💥BlueSky: https://bsky.app/profile/lambdadays.bsky.social\n💥LinkedIn: https://www.linkedin.com/company/lambda-days \n💥Facebook: https://www.facebook.com/lambdadays \n💥Mastodon: https://genserver.social/codesync \n💥Twitter: https://twitter.com/LambdaDays", "Your Website as a Function From URL to HTML - Markus Schlegel | Lambda Days 2025", 1183, false, "iU5RNr4F--g", "https://www.youtube.com/watch?v=iU5RNr4F--g", "/downloads/CodeSync/Season 2025/s2025e120900 - Your Website as a Function From URL to HTML - Markus Schlegel | Lambda Days 2025.mp4", false, 5, ~U[2025-12-09 11:25:47Z]] 13:22:08.267 [debug] QUERY OK source="sources" db=0.9ms queue=0.1ms idle=31.4ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [5] 13:22:08.275 [debug] QUERY OK source="media_items" db=7.7ms idle=27.4ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-12-09 10:58:39Z], 5] 13:22:08.279 [debug] QUERY OK source="media_items" db=1.8ms queue=0.1ms idle=32.8ms INSERT INTO "media_items" AS m0 ("description","title","uuid","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","prevent_download","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["✨ This talk was recorded at Lambda Days in June 2025. If you're curious about our upcoming event, check https://lambdadays.org ✨\n\nSuspension: the magic behind composability (or \"The Kyo Monad\")\n\nKyo is a new effect system in Scala with an innovative approach to generalize monadic computations to express composable algebraic effects. This talk will cover the internals of the library to address common questions: How does it provide effect composability? How can we reason about effect ordering? What’s behind its next-level performance? We’ll explore Kyo’s core suspension mechanism, see how it allows for unparalleled composability, and how it compares to similar solutions like ZIO and Caprese. https://getkyo.io\n\nOBJECTIVES\n- Introduce Kyo as a new encoding of algebraic effects\n- Explore its effect suspension and handling mechanism\n- Provide a mental model for how to reason about effect composition\n- Share an overview of the main performance optimizations of its monadic encoding\n\nLet's keep in touch! Follow us on: \n💥BlueSky: https://bsky.app/profile/lambdadays.bsky.social\n💥LinkedIn: https://www.linkedin.com/company/lambda-days \n💥Facebook: https://www.facebook.com/lambdadays \n💥Mastodon: https://genserver.social/codesync \n💥Twitter: https://twitter.com/LambdaDays", "Suspension: the magic behind composability (or \"The Kyo Monad\") - Flavio Brasil | Lambda Days 2025", "c5c5b2ef-09d1-4dcc-a800-83412079fe96", 2634, false, "y3KiuFczOFE", "https://www.youtube.com/watch?v=y3KiuFczOFE", 13, "/downloads/CodeSync/Season 2025/s2025e120900 - Suspension: the magic behind composability (or "The Kyo Monad") - Flavio Brasil | Lambda Days 2025.mp4", false, false, false, 5, [], 63, ~U[2025-12-09 10:58:39Z], ~U[2026-01-03 02:22:08Z], ~U[2026-01-03 02:22:08Z], "✨ This talk was recorded at Lambda Days in June 2025. If you're curious about our upcoming event, check https://lambdadays.org ✨\n\nSuspension: the magic behind composability (or \"The Kyo Monad\")\n\nKyo is a new effect system in Scala with an innovative approach to generalize monadic computations to express composable algebraic effects. This talk will cover the internals of the library to address common questions: How does it provide effect composability? How can we reason about effect ordering? What’s behind its next-level performance? We’ll explore Kyo’s core suspension mechanism, see how it allows for unparalleled composability, and how it compares to similar solutions like ZIO and Caprese. https://getkyo.io\n\nOBJECTIVES\n- Introduce Kyo as a new encoding of algebraic effects\n- Explore its effect suspension and handling mechanism\n- Provide a mental model for how to reason about effect composition\n- Share an overview of the main performance optimizations of its monadic encoding\n\nLet's keep in touch! Follow us on: \n💥BlueSky: https://bsky.app/profile/lambdadays.bsky.social\n💥LinkedIn: https://www.linkedin.com/company/lambda-days \n💥Facebook: https://www.facebook.com/lambdadays \n💥Mastodon: https://genserver.social/codesync \n💥Twitter: https://twitter.com/LambdaDays", "Suspension: the magic behind composability (or \"The Kyo Monad\") - Flavio Brasil | Lambda Days 2025", 2634, false, "y3KiuFczOFE", "https://www.youtube.com/watch?v=y3KiuFczOFE", "/downloads/CodeSync/Season 2025/s2025e120900 - Suspension: the magic behind composability (or "The Kyo Monad") - Flavio Brasil | Lambda Days 2025.mp4", false, 5, ~U[2025-12-09 10:58:39Z]] 13:22:08.281 [debug] QUERY OK source="sources" db=1.9ms queue=0.1ms idle=18.2ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [5] 13:22:08.299 [debug] QUERY OK source="media_items" db=17.0ms queue=0.2ms idle=17.7ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-12-09 10:58:39Z], 5] 13:22:08.306 [debug] QUERY OK source="media_items" db=4.7ms queue=0.1ms idle=33.4ms INSERT INTO "media_items" AS m0 ("description","title","uuid","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","prevent_download","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["✨ This talk was recorded at Lambda Days in June 2025. If you're curious about our upcoming event, check https://lambdadays.org ✨\n\nElectrifying Norway with F# and DDD\n\nImagine inheriting a large C# legacy codebase for electrical transmission line modelling software. It desperately needs love. Where do you start? What would happen if you rewrote its core parts to F# with Domain-Driven Design in mind? \n\nIt turns out that Units of Measure, Expressions-only syntax, Immutability, and Exhaustive Pattern Matching are incredibly useful features of F#. Combined with Domain-Driven Design (DDD), strongly typing your domain with Algebraic Data Types in F# has never been easier.\n\nJoin me as I take you through our rewriting journey with specific examples. There was some agony involved, but it was mostly pure fun!\n\nLet's keep in touch! Follow us on: \n💥BlueSky: https://bsky.app/profile/lambdadays.bsky.social\n💥LinkedIn: https://www.linkedin.com/company/lambda-days \n💥Facebook: https://www.facebook.com/lambdadays \n💥Mastodon: https://genserver.social/codesync \n💥Twitter: https://twitter.com/LambdaDays", "Electrifying Norway with F# and DDD - Almir Mesic | Lambda Days 2025", "79d46d13-72c1-4bbd-b8ab-d2dfd6958e34", 2414, false, "xE23wssaleE", "https://www.youtube.com/watch?v=xE23wssaleE", 14, "/downloads/CodeSync/Season 2025/s2025e120900 - Electrifying Norway with F# and DDD - Almir Mesic | Lambda Days 2025.mp4", false, false, false, 5, [], 63, ~U[2025-12-09 10:58:39Z], ~U[2026-01-03 02:22:08Z], ~U[2026-01-03 02:22:08Z], "✨ This talk was recorded at Lambda Days in June 2025. If you're curious about our upcoming event, check https://lambdadays.org ✨\n\nElectrifying Norway with F# and DDD\n\nImagine inheriting a large C# legacy codebase for electrical transmission line modelling software. It desperately needs love. Where do you start? What would happen if you rewrote its core parts to F# with Domain-Driven Design in mind? \n\nIt turns out that Units of Measure, Expressions-only syntax, Immutability, and Exhaustive Pattern Matching are incredibly useful features of F#. Combined with Domain-Driven Design (DDD), strongly typing your domain with Algebraic Data Types in F# has never been easier.\n\nJoin me as I take you through our rewriting journey with specific examples. There was some agony involved, but it was mostly pure fun!\n\nLet's keep in touch! Follow us on: \n💥BlueSky: https://bsky.app/profile/lambdadays.bsky.social\n💥LinkedIn: https://www.linkedin.com/company/lambda-days \n💥Facebook: https://www.facebook.com/lambdadays \n💥Mastodon: https://genserver.social/codesync \n💥Twitter: https://twitter.com/LambdaDays", "Electrifying Norway with F# and DDD - Almir Mesic | Lambda Days 2025", 2414, false, "xE23wssaleE", "https://www.youtube.com/watch?v=xE23wssaleE", "/downloads/CodeSync/Season 2025/s2025e120900 - Electrifying Norway with F# and DDD - Almir Mesic | Lambda Days 2025.mp4", false, 5, ~U[2025-12-09 10:58:39Z]] 13:22:08.308 [debug] QUERY OK source="sources" db=2.1ms queue=0.2ms idle=31.4ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [5] 13:22:08.326 [debug] QUERY OK source="media_items" db=16.6ms idle=31.1ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-12-09 10:58:39Z], 5] 13:22:08.331 [debug] QUERY OK source="media_items" db=3.8ms queue=0.1ms idle=45.0ms INSERT INTO "media_items" AS m0 ("description","title","uuid","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","prevent_download","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["✨ This talk was recorded at Lambda Days in June 2025. If you're curious about our upcoming event, check https://lambdadays.org ✨\n\nEffect Systems in Practice\n\nWe will approach the topic of Effect Systems to write Haskell applications, understand why it is important to have semantic effect tracking in your software, and see how it all fits into the design and maintenance of software systems. We will explore the design of effect systems since the early days, and see how Effectful, developed for industrial needs of performance and ease-of-use, fares in 2025.\n\nOBJECTIVES\nGet an understanding of the trade-offs between effect systems in Haskell, and understand the need for semantic effect tracking\n\nLet's keep in touch! Follow us on: \n💥BlueSky: https://bsky.app/profile/lambdadays.bsky.social\n💥LinkedIn: https://www.linkedin.com/company/lambda-days \n💥Facebook: https://www.facebook.com/lambdadays \n💥Mastodon: https://genserver.social/codesync \n💥Twitter: https://twitter.com/LambdaDays", "Effect Systems in Practice Hécate | Lambda Days 2025", "d4319910-4a1b-4b0c-8b59-c9ff0333dcf4", 2407, false, "wZy0pVkQ-Jg", "https://www.youtube.com/watch?v=wZy0pVkQ-Jg", 15, "/downloads/CodeSync/Season 2025/s2025e120900 - Effect Systems in Practice Hécate | Lambda Days 2025.mp4", false, false, false, 5, [], 63, ~U[2025-12-09 10:58:39Z], ~U[2026-01-03 02:22:08Z], ~U[2026-01-03 02:22:08Z], "✨ This talk was recorded at Lambda Days in June 2025. If you're curious about our upcoming event, check https://lambdadays.org ✨\n\nEffect Systems in Practice\n\nWe will approach the topic of Effect Systems to write Haskell applications, understand why it is important to have semantic effect tracking in your software, and see how it all fits into the design and maintenance of software systems. We will explore the design of effect systems since the early days, and see how Effectful, developed for industrial needs of performance and ease-of-use, fares in 2025.\n\nOBJECTIVES\nGet an understanding of the trade-offs between effect systems in Haskell, and understand the need for semantic effect tracking\n\nLet's keep in touch! Follow us on: \n💥BlueSky: https://bsky.app/profile/lambdadays.bsky.social\n💥LinkedIn: https://www.linkedin.com/company/lambda-days \n💥Facebook: https://www.facebook.com/lambdadays \n💥Mastodon: https://genserver.social/codesync \n💥Twitter: https://twitter.com/LambdaDays", "Effect Systems in Practice Hécate | Lambda Days 2025", 2407, false, "wZy0pVkQ-Jg", "https://www.youtube.com/watch?v=wZy0pVkQ-Jg", "/downloads/CodeSync/Season 2025/s2025e120900 - Effect Systems in Practice Hécate | Lambda Days 2025.mp4", false, 5, ~U[2025-12-09 10:58:39Z]] 13:22:08.334 [debug] QUERY OK source="sources" db=1.9ms queue=0.1ms idle=32.3ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [5] 13:22:08.351 [debug] QUERY OK source="media_items" db=17.1ms queue=0.1ms idle=29.1ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-12-09 10:58:39Z], 5] 13:22:08.355 [debug] QUERY OK source="media_items" db=2.0ms queue=0.1ms idle=43.6ms INSERT INTO "media_items" AS m0 ("description","title","uuid","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","prevent_download","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["✨ This talk was recorded at Lambda Days in June 2025. If you're curious about our upcoming event, check https://lambdadays.org ✨\n\nYour docs are a program\n\nWhen programming, documentation typically takes a back seat to development. There are good reasons for this: docs are hard to maintain, as well as write, and the tools for working with them can be painful. But writing documentation is very similar to writing code: it's just that we don't have a great language for it yet. This talk posits that docs are programs. If so, what does their ideal programming language look like? To address this, we treat documentation as an artefact produced by compilation. Like a programming pipeline, a doc pipeline has phases, symbols and errors, but that it also has unique concerns around structure and flow.\n\nIn the search for our ideal language, we'll explore Pollen in Racket, Elixir Livebooks, mdoc and Laika in Scala, and see how these tools influence our experience. At the end, we'll have a vision of what writing docs could be. You might not enjoy writing docs, but you'll improve your workflow and even be inspired to develop your own doc tooling.\n\nLet's keep in touch! Follow us on: \n💥BlueSky: https://bsky.app/profile/lambdadays.bsky.social\n💥LinkedIn: https://www.linkedin.com/company/lambda-days \n💥Facebook: https://www.facebook.com/lambdadays \n💥Mastodon: https://genserver.social/codesync \n💥Twitter: https://twitter.com/LambdaDays", "Your docs are a program - Zainab Ali | Lambda Days 2025", "af84223d-7191-48f8-8b79-8a8c3fb15e94", 2865, false, "vxsIBD9vIYk", "https://www.youtube.com/watch?v=vxsIBD9vIYk", 16, "/downloads/CodeSync/Season 2025/s2025e120900 - Your docs are a program - Zainab Ali | Lambda Days 2025.mp4", false, false, false, 5, [], 63, ~U[2025-12-09 10:58:39Z], ~U[2026-01-03 02:22:08Z], ~U[2026-01-03 02:22:08Z], "✨ This talk was recorded at Lambda Days in June 2025. If you're curious about our upcoming event, check https://lambdadays.org ✨\n\nYour docs are a program\n\nWhen programming, documentation typically takes a back seat to development. There are good reasons for this: docs are hard to maintain, as well as write, and the tools for working with them can be painful. But writing documentation is very similar to writing code: it's just that we don't have a great language for it yet. This talk posits that docs are programs. If so, what does their ideal programming language look like? To address this, we treat documentation as an artefact produced by compilation. Like a programming pipeline, a doc pipeline has phases, symbols and errors, but that it also has unique concerns around structure and flow.\n\nIn the search for our ideal language, we'll explore Pollen in Racket, Elixir Livebooks, mdoc and Laika in Scala, and see how these tools influence our experience. At the end, we'll have a vision of what writing docs could be. You might not enjoy writing docs, but you'll improve your workflow and even be inspired to develop your own doc tooling.\n\nLet's keep in touch! Follow us on: \n💥BlueSky: https://bsky.app/profile/lambdadays.bsky.social\n💥LinkedIn: https://www.linkedin.com/company/lambda-days \n💥Facebook: https://www.facebook.com/lambdadays \n💥Mastodon: https://genserver.social/codesync \n💥Twitter: https://twitter.com/LambdaDays", "Your docs are a program - Zainab Ali | Lambda Days 2025", 2865, false, "vxsIBD9vIYk", "https://www.youtube.com/watch?v=vxsIBD9vIYk", "/downloads/CodeSync/Season 2025/s2025e120900 - Your docs are a program - Zainab Ali | Lambda Days 2025.mp4", false, 5, ~U[2025-12-09 10:58:39Z]] 13:22:08.357 [debug] QUERY OK source="sources" db=1.0ms queue=0.1ms idle=30.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [5] 13:22:08.364 [debug] QUERY OK source="media_items" db=6.7ms idle=26.7ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-12-09 10:58:39Z], 5] 13:22:08.370 [debug] QUERY OK source="media_items" db=4.3ms queue=0.1ms idle=31.5ms INSERT INTO "media_items" AS m0 ("description","title","uuid","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","prevent_download","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["✨ This talk was recorded at Lambda Days in June 2025. If you're curious about our upcoming event, check https://lambdadays.org ✨\n\nProgramming a Language\n\nProgramming languages are a large amount of our day to day work and, for some of us, our hobbies. And I am very much of the opinion that in order to fully understand our tools, we must be able to make them ourselves.\n\nIn this talk, I will show you how to create a programming language from scratch. You will come away from this with a deeper understanding of, and insights on, your tools. It will also teach you what you need to write powerful DSLs, which in my experience can be an absolute game changer when maintaining software whose purpose I'm not an expert on, but I do have access to experts.\n\nLet's keep in touch! Follow us on: \n💥BlueSky: https://bsky.app/profile/lambdadays.bsky.social\n💥LinkedIn: https://www.linkedin.com/company/lambda-days \n💥Facebook: https://www.facebook.com/lambdadays \n💥Mastodon: https://genserver.social/codesync \n💥Twitter: https://twitter.com/LambdaDays", "Programming a Language - Nicolas Rinaudo | Lambda Days 2025", "877d51a6-7b94-489b-9f17-74c39b8bc936", 3221, false, "uZUPMxm4XAM", "https://www.youtube.com/watch?v=uZUPMxm4XAM", 17, "/downloads/CodeSync/Season 2025/s2025e120900 - Programming a Language - Nicolas Rinaudo | Lambda Days 2025.mp4", false, false, false, 5, [], 63, ~U[2025-12-09 10:58:39Z], ~U[2026-01-03 02:22:08Z], ~U[2026-01-03 02:22:08Z], "✨ This talk was recorded at Lambda Days in June 2025. If you're curious about our upcoming event, check https://lambdadays.org ✨\n\nProgramming a Language\n\nProgramming languages are a large amount of our day to day work and, for some of us, our hobbies. And I am very much of the opinion that in order to fully understand our tools, we must be able to make them ourselves.\n\nIn this talk, I will show you how to create a programming language from scratch. You will come away from this with a deeper understanding of, and insights on, your tools. It will also teach you what you need to write powerful DSLs, which in my experience can be an absolute game changer when maintaining software whose purpose I'm not an expert on, but I do have access to experts.\n\nLet's keep in touch! Follow us on: \n💥BlueSky: https://bsky.app/profile/lambdadays.bsky.social\n💥LinkedIn: https://www.linkedin.com/company/lambda-days \n💥Facebook: https://www.facebook.com/lambdadays \n💥Mastodon: https://genserver.social/codesync \n💥Twitter: https://twitter.com/LambdaDays", "Programming a Language - Nicolas Rinaudo | Lambda Days 2025", 3221, false, "uZUPMxm4XAM", "https://www.youtube.com/watch?v=uZUPMxm4XAM", "/downloads/CodeSync/Season 2025/s2025e120900 - Programming a Language - Nicolas Rinaudo | Lambda Days 2025.mp4", false, 5, ~U[2025-12-09 10:58:39Z]] 13:22:08.373 [debug] QUERY OK source="sources" db=1.3ms queue=0.1ms idle=19.8ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [5] 13:22:08.391 [debug] QUERY OK source="media_items" db=18.0ms queue=0.2ms idle=18.8ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-12-09 10:58:39Z], 5] 13:22:08.398 [debug] QUERY OK source="media_items" db=4.4ms queue=0.1ms idle=35.4ms INSERT INTO "media_items" AS m0 ("description","title","uuid","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","prevent_download","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["✨ This talk was recorded at Lambda Days in June 2025. If you're curious about our upcoming event, check https://lambdadays.org ✨\n\nWhat is Functional Programming?\nFunctional programming is here to stay. While it hasn't taken over the world, many of today’s popular programming languages have at least borrowed some of its concepts.\n\nBut if someone asks you, \"What is functional programming?\"—would you be able to answer? Specifically, when can we call a language \"functional\"? Or, what exactly is \"functional style\"?\n\nIn this talk, we’ll explore the features that may define a language as functional, first by trying to visually identify \"functional\" code, and then trying to generalise our intuition. This covers topics all the way from higher-order functions, to capturing effects as values.\n\nNext, we'll introduce a couple of FP flavours, which might help to understand, why the definitions of FP that circulate in the virtual world sometimes seem so different.\n\nFinally, we'll try to judge which FP features bring the most value, and quantify a couple of mainstream languages in their \"functionfullness\".\n\nLet's keep in touch! Follow us on: \n💥BlueSky: https://bsky.app/profile/lambdadays.bsky.social\n💥LinkedIn: https://www.linkedin.com/company/lambda-days \n💥Facebook: https://www.facebook.com/lambdadays \n💥Mastodon: https://genserver.social/codesync \n💥Twitter: https://twitter.com/LambdaDays", "What is Functional Programming? - Adam Warski | Lambda Days 2025", "5eed63fe-5843-46e2-af01-59bbcd1482c6", 2755, false, "pnZSff01FYQ", "https://www.youtube.com/watch?v=pnZSff01FYQ", 18, "/downloads/CodeSync/Season 2025/s2025e120900 - What is Functional Programming? - Adam Warski | Lambda Days 2025.mp4", false, false, false, 5, [], 63, ~U[2025-12-09 10:58:39Z], ~U[2026-01-03 02:22:08Z], ~U[2026-01-03 02:22:08Z], "✨ This talk was recorded at Lambda Days in June 2025. If you're curious about our upcoming event, check https://lambdadays.org ✨\n\nWhat is Functional Programming?\nFunctional programming is here to stay. While it hasn't taken over the world, many of today’s popular programming languages have at least borrowed some of its concepts.\n\nBut if someone asks you, \"What is functional programming?\"—would you be able to answer? Specifically, when can we call a language \"functional\"? Or, what exactly is \"functional style\"?\n\nIn this talk, we’ll explore the features that may define a language as functional, first by trying to visually identify \"functional\" code, and then trying to generalise our intuition. This covers topics all the way from higher-order functions, to capturing effects as values.\n\nNext, we'll introduce a couple of FP flavours, which might help to understand, why the definitions of FP that circulate in the virtual world sometimes seem so different.\n\nFinally, we'll try to judge which FP features bring the most value, and quantify a couple of mainstream languages in their \"functionfullness\".\n\nLet's keep in touch! Follow us on: \n💥BlueSky: https://bsky.app/profile/lambdadays.bsky.social\n💥LinkedIn: https://www.linkedin.com/company/lambda-days \n💥Facebook: https://www.facebook.com/lambdadays \n💥Mastodon: https://genserver.social/codesync \n💥Twitter: https://twitter.com/LambdaDays", "What is Functional Programming? - Adam Warski | Lambda Days 2025", 2755, false, "pnZSff01FYQ", "https://www.youtube.com/watch?v=pnZSff01FYQ", "/downloads/CodeSync/Season 2025/s2025e120900 - What is Functional Programming? - Adam Warski | Lambda Days 2025.mp4", false, 5, ~U[2025-12-09 10:58:39Z]] 13:22:08.400 [debug] QUERY OK source="sources" db=1.8ms queue=0.1ms idle=34.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [5] 13:22:08.416 [debug] QUERY OK source="media_items" db=15.0ms idle=31.0ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-12-09 10:58:39Z], 5] 13:22:08.418 [debug] QUERY OK source="media_items" db=1.8ms idle=43.5ms INSERT INTO "media_items" AS m0 ("description","title","uuid","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","prevent_download","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["✨ This talk was recorded at Lambda Days in June 2025. If you're curious about our upcoming event, check https://lambdadays.org ✨\n\nProduction Haskell Regrets\n\nHindsight is 20/20, but in tech, it's often 20/200. In this talk, I'll share the biggest technological regrets from shipping a Haskell enterprise SaaS product over the past half-decade — technologies I embraced too soon, ideas I clung to for too long, and decisions that seemed right at the time but proved costly in the long run. Through real-world examples, I'll explore how biases, trends, and over-engineering can lead us astray, and how we can develop better instincts for long-term thinking in software. Whether you're a junior developer or a seasoned architect, this talk will help you avoid some of the mistakes I made—so you can make better ones of your own.\n\nLet's keep in touch! Follow us on: \n💥BlueSky: https://bsky.app/profile/lambdadays.bsky.social\n💥LinkedIn: https://www.linkedin.com/company/lambda-days \n💥Facebook: https://www.facebook.com/lambdadays \n💥Mastodon: https://genserver.social/codesync \n💥Twitter: https://twitter.com/LambdaDays", "Production Haskell Regrets - Jezen Thomas | Lambda Days 2025", "e0e22150-7d8f-4a57-885f-abd20cae677a", 1233, false, "mZDxVCb6fM0", "https://www.youtube.com/watch?v=mZDxVCb6fM0", 19, "/downloads/CodeSync/Season 2025/s2025e120900 - Production Haskell Regrets - Jezen Thomas | Lambda Days 2025.mp4", false, false, false, 5, [], 63, ~U[2025-12-09 10:58:39Z], ~U[2026-01-03 02:22:08Z], ~U[2026-01-03 02:22:08Z], "✨ This talk was recorded at Lambda Days in June 2025. If you're curious about our upcoming event, check https://lambdadays.org ✨\n\nProduction Haskell Regrets\n\nHindsight is 20/20, but in tech, it's often 20/200. In this talk, I'll share the biggest technological regrets from shipping a Haskell enterprise SaaS product over the past half-decade — technologies I embraced too soon, ideas I clung to for too long, and decisions that seemed right at the time but proved costly in the long run. Through real-world examples, I'll explore how biases, trends, and over-engineering can lead us astray, and how we can develop better instincts for long-term thinking in software. Whether you're a junior developer or a seasoned architect, this talk will help you avoid some of the mistakes I made—so you can make better ones of your own.\n\nLet's keep in touch! Follow us on: \n💥BlueSky: https://bsky.app/profile/lambdadays.bsky.social\n💥LinkedIn: https://www.linkedin.com/company/lambda-days \n💥Facebook: https://www.facebook.com/lambdadays \n💥Mastodon: https://genserver.social/codesync \n💥Twitter: https://twitter.com/LambdaDays", "Production Haskell Regrets - Jezen Thomas | Lambda Days 2025", 1233, false, "mZDxVCb6fM0", "https://www.youtube.com/watch?v=mZDxVCb6fM0", "/downloads/CodeSync/Season 2025/s2025e120900 - Production Haskell Regrets - Jezen Thomas | Lambda Days 2025.mp4", false, 5, ~U[2025-12-09 10:58:39Z]] 13:22:08.420 [debug] QUERY OK source="sources" db=0.8ms idle=27.2ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [5] 13:22:08.438 [debug] QUERY OK source="media_items" db=18.0ms idle=23.0ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-12-09 10:58:39Z], 5] 13:22:08.444 [debug] QUERY OK source="media_items" db=4.8ms idle=38.3ms INSERT INTO "media_items" AS m0 ("description","title","uuid","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","prevent_download","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["✨ This talk was recorded at Lambda Days in June 2025. If you're curious about our upcoming event, check https://lambdadays.org ✨\n\nTesting functional UIs\n\nThe state of frontend testing is all a bit rubbish. Often we default to end-to-end tests and visual snapshots - if we even write tests at all - that are slow and error prone. But we do functional programming, can't we do better?!\n\nIn this talk we'll break down and better understand what exactly it is we're trying to test when testing user interfaces before taking a look at how the properties of functional UI frameworks like Elm and Lustre can make writing tests easier, faster, and more robust.\n\nCrucially, we'll walk away with a toolkit of testing approaches we can reach for *before* we need to pull out Cypress and grind our CI to a halt!\n\nLet's keep in touch! Follow us on: \n💥BlueSky: https://bsky.app/profile/lambdadays.bsky.social\n💥LinkedIn: https://www.linkedin.com/company/lambda-days \n💥Facebook: https://www.facebook.com/lambdadays \n💥Mastodon: https://genserver.social/codesync \n💥Twitter: https://twitter.com/LambdaDays", "Testing functional UIs - Hayleigh Thompson | Lambda Days 2025", "340e2582-b49e-4000-980f-8664a09ba4cd", 1115, false, "lnvmbzwIt94", "https://www.youtube.com/watch?v=lnvmbzwIt94", 20, "/downloads/CodeSync/Season 2025/s2025e120900 - Testing functional UIs - Hayleigh Thompson | Lambda Days 2025.mp4", false, false, false, 5, [], 63, ~U[2025-12-09 10:58:39Z], ~U[2026-01-03 02:22:08Z], ~U[2026-01-03 02:22:08Z], "✨ This talk was recorded at Lambda Days in June 2025. If you're curious about our upcoming event, check https://lambdadays.org ✨\n\nTesting functional UIs\n\nThe state of frontend testing is all a bit rubbish. Often we default to end-to-end tests and visual snapshots - if we even write tests at all - that are slow and error prone. But we do functional programming, can't we do better?!\n\nIn this talk we'll break down and better understand what exactly it is we're trying to test when testing user interfaces before taking a look at how the properties of functional UI frameworks like Elm and Lustre can make writing tests easier, faster, and more robust.\n\nCrucially, we'll walk away with a toolkit of testing approaches we can reach for *before* we need to pull out Cypress and grind our CI to a halt!\n\nLet's keep in touch! Follow us on: \n💥BlueSky: https://bsky.app/profile/lambdadays.bsky.social\n💥LinkedIn: https://www.linkedin.com/company/lambda-days \n💥Facebook: https://www.facebook.com/lambdadays \n💥Mastodon: https://genserver.social/codesync \n💥Twitter: https://twitter.com/LambdaDays", "Testing functional UIs - Hayleigh Thompson | Lambda Days 2025", 1115, false, "lnvmbzwIt94", "https://www.youtube.com/watch?v=lnvmbzwIt94", "/downloads/CodeSync/Season 2025/s2025e120900 - Testing functional UIs - Hayleigh Thompson | Lambda Days 2025.mp4", false, 5, ~U[2025-12-09 10:58:39Z]] 13:22:08.446 [debug] QUERY OK source="sources" db=1.4ms queue=0.1ms idle=28.5ms UPDATE "sources" SET "last_indexed_at" = ?, "updated_at" = ? WHERE "id" = ? [~U[2026-01-03 02:22:08Z], ~U[2026-01-03 02:22:08Z], 5] 13:22:08.464 [debug] QUERY OK source="media_items" db=17.6ms idle=28.1ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [5] 13:22:08.481 [debug] QUERY OK source="media_items" db=14.8ms idle=28.3ms SELECT count(*) FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [5] 13:22:08.483 [debug] QUERY OK source="media_items" db=0.9ms idle=38.0ms SELECT count(*) FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND NOT (m0."media_filepath" IS NULL)) [5] 13:22:08.485 [debug] QUERY OK source="tasks" db=0.5ms idle=18.8ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [202963, 5, ~U[2026-01-03 02:22:08Z], ~U[2026-01-03 02:22:08Z]] 13:22:08.487 [info] {"args":{"id":5},"id":202129,"meta":{},"state":"success","max_attempts":20,"queue":"media_collection_indexing","worker":"Pinchflat.SlowIndexing.MediaCollectionIndexingWorker","source":"oban","duration":95227826,"event":"job:stop","queue_time":427387,"attempt":1,"tags":["media_source","media_collection_indexing","show_in_dashboard"]} 13:22:12.636 [info] {"source":"oban","duration":2604,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:22:13.571 [info] {"args":{"id":19},"id":202939,"meta":{},"system_time":1767406933571224399,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 13:22:13.572 [debug] QUERY OK source="sources" db=0.4ms queue=0.1ms idle=1759.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [19] 13:22:13.573 [debug] QUERY OK source="settings" db=0.3ms idle=1011.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:22:13.574 [debug] QUERY OK source="media_profiles" db=0.3ms idle=937.3ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:22:13.574 [debug] QUERY OK source="settings" db=0.2ms queue=0.1ms idle=10.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:22:13.574 [debug] Fetching recent media IDs from YouTube API for playlist: UUaYhH3F6iB3KyW3afTHk5XA 13:22:13.575 [debug] QUERY OK source="settings" db=0.2ms idle=3.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:22:13.575 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 13:22:14.107 [debug] QUERY OK source="media_items" db=2.5ms idle=531.6ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND m0."media_id" IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [19, "mUlKcxGWvrQ", "ydfuNK4wSik", "x6cNQykYdEM", "SvyVS7zvquc", "l4O2F-1BWVI", "LYXADYUSTSg", "HpL40FdPGqk", "Wre5VWHxSug", "PdUu77SAH0I", "VCflrtok9hQ", "haEa6h8Ptf0", "c_-f7G9VSPw", "7rSLcNznix4", "OLXr-B-xwY8", "X05FPJq6_Oc", "kuL-trgOvq8", "WpBEifN8BYw", "YETks_YtraY", "bwKKd4N8Q2E", "PpNfOqbt0a8", "GyifuiQ6p48", "SkoFBCBASto", "-GNid2M6IC8", "muehDmLuJSw", "nBx5yssxPDk", "Q6vzDo6it9o", "AH9Z6_PlKhA", "dZfthyLyjDk", "j9UuSMaqX9Q", "jmoVFLUvyD0", "tKm_pnNEDsc", "boVAiizeh1M", "FNtBH6k7Jmo", "MDhN5WGOJ_o", "P-UQX5L_Ff0", "kys3lRzOOEY", "VDHSC2Dl8f0", "JU0uEdyPKlE", "0sSWAzq7rjc", "HOLXNrjWeuo"] 13:22:14.110 [debug] QUERY OK source="media_items" db=0.9ms idle=536.0ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [19] 13:22:14.114 [debug] QUERY OK source="tasks" db=0.5ms idle=537.9ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [202964, 19, ~U[2026-01-03 02:22:14Z], ~U[2026-01-03 02:22:14Z]] 13:22:14.114 [info] {"args":{"id":19},"id":202939,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":542934,"event":"job:stop","queue_time":214004,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 13:22:14.576 [info] {"args":{"id":23},"id":202940,"meta":{},"system_time":1767406934575918070,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 13:22:14.578 [debug] QUERY OK source="sources" db=2.0ms idle=462.3ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [23] 13:22:14.579 [debug] QUERY OK source="settings" db=0.4ms queue=0.1ms idle=464.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:22:14.580 [debug] QUERY OK source="media_profiles" db=0.5ms idle=457.4ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:22:14.580 [debug] QUERY OK source="settings" db=0.3ms idle=13.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:22:14.580 [debug] Fetching recent media IDs from YouTube API for playlist: UUSHvlfXUGYGWmDBg-afA5Bg 13:22:14.581 [debug] QUERY OK source="settings" db=0.2ms idle=5.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:22:14.581 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 13:22:14.905 [debug] QUERY OK source="media_items" db=3.9ms idle=323.4ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND m0."media_id" IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [23, "QASZbKPkS08", "pr7MMAFzHe8", "DG0BSdc6kKg", "o7DJZCU8q34", "G5A2QGwRmS4", "PER4GK9LCTA", "GzIS1WZFKtc", "24P4MFV-HrM", "6x6df3uagb4", "vALU9LhFKhE", "KF1grNBv5hU", "SLSPmp8-tXE", "53liPfHBgYQ", "zykmoM0qjbA", "boyfPk5qdBM", "H2VYuo7yb2o", "75_mYLpHDr4", "PSnlGB9aKVI", "vFBFSi2XqrQ", "X2z1ugOwR2A", "ePV6FKD1J9U", "ipxj_tl_6XY", "6l9-ctzSbCo", "xu3DTyCW3Yk", "wpAt0QaSk7U", "NXy9Sg0KIMY", "ml5AG_Q0y6w", "h_Uq6-e06y8", "37_rLteuwG4", "QCbf0kOJ8lA"] 13:22:14.909 [debug] QUERY OK source="media_items" db=1.8ms idle=327.9ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [23] 13:22:14.912 [debug] QUERY OK source="tasks" db=0.5ms idle=330.6ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [202965, 23, ~U[2026-01-03 02:22:14Z], ~U[2026-01-03 02:22:14Z]] 13:22:14.913 [info] {"args":{"id":23},"id":202940,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":336700,"event":"job:stop","queue_time":453041,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 13:22:15.579 [info] {"args":{"id":25},"id":202941,"meta":{},"system_time":1767406935579505954,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 13:22:15.580 [debug] QUERY OK source="sources" db=0.4ms queue=0.1ms idle=667.8ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [25] 13:22:15.582 [debug] QUERY OK source="settings" db=0.4ms queue=0.2ms idle=667.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:22:15.583 [debug] QUERY OK source="media_profiles" db=0.4ms queue=0.1ms idle=661.1ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:22:15.583 [debug] QUERY OK source="settings" db=0.3ms queue=0.1ms idle=11.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:22:15.584 [debug] Fetching recent media IDs from YouTube API for playlist: UUWstkeBSSIEgw6n5qnlXXuA 13:22:15.585 [debug] QUERY OK source="settings" db=0.3ms queue=0.1ms idle=5.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:22:15.585 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 13:22:15.935 [debug] QUERY OK source="media_items" db=2.3ms queue=0.1ms idle=351.8ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND m0."media_id" IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [25, "_sYSZI--9TA", "T7P86y4vYKs", "qWpf9ysgE04", "81v7r86tRRE", "a3LYS6jzPKA", "o5UKHwwdhmA", "6CCxzLKCHYA", "VONzFNo8uW4", "jJUysp-6qBs", "3KzmAquL3e4", "5cgK_MdFz7s", "bHpsXfutTFY", "kVhFNQj86Ng", "nyd40ZDhRw4"] 13:22:15.938 [debug] QUERY OK source="media_items" db=0.8ms queue=0.1ms idle=355.2ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [25] 13:22:15.942 [debug] QUERY OK source="tasks" db=0.7ms idle=356.7ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [202966, 25, ~U[2026-01-03 02:22:15Z], ~U[2026-01-03 02:22:15Z]] 13:22:15.943 [info] {"args":{"id":25},"id":202941,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":363247,"event":"job:stop","queue_time":471585,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 13:22:16.583 [info] {"args":{"id":17},"id":202942,"meta":{},"system_time":1767406936583464863,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 13:22:16.584 [debug] QUERY OK source="sources" db=0.4ms queue=0.1ms idle=641.7ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [17] 13:22:16.586 [debug] QUERY OK source="settings" db=0.6ms queue=0.1ms idle=641.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:22:16.586 [debug] QUERY OK source="media_profiles" db=0.4ms queue=0.1ms idle=635.4ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:22:16.587 [debug] QUERY OK source="settings" db=0.4ms queue=0.1ms idle=10.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:22:16.588 [debug] Fetching recent media IDs from YouTube API for playlist: UUEIwxahdLz7bap-VDs9h35A 13:22:16.588 [debug] QUERY OK source="settings" db=0.3ms queue=0.1ms idle=5.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:22:16.589 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 13:22:16.917 [debug] QUERY OK source="media_items" db=3.4ms idle=328.1ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND m0."media_id" IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [17, "kuMUquaeE6g", "-NzfTE8RI4w", "2eiYALLYBFE", "J_vXK9uvRf4", "tRDxBwverlI", "ymlNErMdI2k", "hM1l19H0tX8", "qg01MgiVT9k", "a3l6FdpltbQ", "NtZaP8VMv0c", "ayicYezINas", "zoTuSOEOvPw", "U7NHNT3M-tw", "B_PCZiNlmPw", "5glksNTKkZI", "iDsb-pxE3fA", "7PJi9KSDVbQ", "CfhsW1kaa2Q", "pleHURTV6fU", "T47s4L1Wje4", "LLlghvxVoH0", "K4542wtX8B4", "rf-efIZI_Dg", "OXvdwc6NDqM", "nGEHUbTtpPY", "0FybegjTkgw", "3TgdCWBV0pg", "Qjd4CREfYbo", "pqnyUemUDF4", "6-FQSEVc_cs", "BvoDuNZ9gLA", "AjJfefo41M8", "dJSGJ1-9XWw", "Mcg9GcilBfU", "MQSwyrjTV2M", "o-dZKBwbsis", "matUCqoiSGk", "0_VdGzEk5-M", "PAOpkv0fpik", "VdwSMytC7y4", "tw5tQPm-B00", "vkD3-msLIHg", "INq7pAmaUuk", "mfTVxFapdLw", "kY2YeM5fNDw", "lkWRiks6luc", "yiCM_i8r4RM", "XzBMFsZT5gM", "dKN6XatdVkY", ...] 13:22:16.924 [debug] QUERY OK source="media_items" db=2.6ms idle=335.1ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [17] 13:22:16.927 [debug] QUERY OK source="tasks" db=0.5ms idle=338.2ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [202967, 17, ~U[2026-01-03 02:22:16Z], ~U[2026-01-03 02:22:16Z]] 13:22:16.929 [info] {"args":{"id":17},"id":202942,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":344449,"event":"job:stop","queue_time":414314,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 13:22:31.019 [info] GET /sources/16/media/10103 13:22:31.019 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "10103", "source_id" => "16"} Pipelines: [:browser] 13:22:31.020 [debug] QUERY OK source="media_items" db=0.4ms queue=0.1ms idle=414.6ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [10103] 13:22:31.021 [debug] QUERY OK source="tasks" db=0.7ms queue=0.1ms idle=208.0ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [10103] 13:22:31.021 [info] GET /sources/18/media/59084/edit 13:22:31.022 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "59084", "source_id" => "18"} Pipelines: [:browser] 13:22:31.022 [debug] QUERY OK source="sources" db=0.9ms idle=208.1ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [16] 13:22:31.023 [debug] QUERY OK source="settings" db=0.8ms idle=209.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:22:31.023 [debug] QUERY OK source="media_items" db=1.4ms idle=209.3ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [59084] 13:22:31.024 [debug] QUERY OK source="settings" db=0.3ms idle=3.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:22:31.024 [debug] QUERY OK source="settings" db=0.3ms idle=2.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:22:31.025 [debug] QUERY OK source="settings" db=0.4ms idle=1.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:22:31.025 [debug] QUERY OK source="settings" db=0.7ms idle=2.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:22:31.026 [debug] QUERY OK source="settings" db=0.5ms idle=2.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:22:31.026 [info] GET /sources/3/media/59026/edit 13:22:31.026 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "59026", "source_id" => "3"} Pipelines: [:browser] 13:22:31.026 [debug] QUERY OK source="media_profiles" db=0.7ms idle=2.0ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:22:31.028 [info] Sent 200 in 6ms 13:22:31.029 [debug] QUERY OK source="media_items" db=1.9ms idle=2.5ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [59026] 13:22:31.029 [info] Sent 200 in 10ms 13:22:31.030 [info] GET /sources/16/force_download_pending 13:22:31.030 [debug] QUERY OK source="settings" db=1.0ms idle=4.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:22:31.030 [debug] QUERY OK source="settings" db=0.2ms idle=5.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:22:31.031 [info] GET /sources/3/media/43212 13:22:31.031 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "43212", "source_id" => "3"} Pipelines: [:browser] 13:22:31.031 [debug] QUERY OK source="settings" db=0.3ms queue=0.1ms idle=4.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:22:31.031 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 13:22:31.031 [debug] QUERY OK source="settings" db=1.0ms idle=4.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:22:31.032 [debug] QUERY OK source="media_items" db=0.8ms idle=2.5ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [43212] 13:22:31.032 [debug] QUERY OK source="settings" db=0.4ms idle=1.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:22:31.033 [debug] QUERY OK source="tasks" db=0.8ms queue=0.2ms idle=1.9ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [43212] 13:22:31.034 [debug] QUERY OK source="sources" db=1.2ms queue=0.1ms idle=1.3ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [3] 13:22:31.034 [info] Sent 200 in 7ms 13:22:31.032 [error] #PID<0.10091.0> running PinchflatWeb.Endpoint (connection #PID<0.10090.0>, stream id 1) terminated Server: pinchflat.uiau7e.uncld.dev:80 (http) Request: GET /sources/16/force_download_pending ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/16/force_download_pending (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.10090.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/16/force_download_pending", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 36430}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, zstd, deflate", "host" => "pinchflat.uiau7e.uncld.dev", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)", "via" => "2.0 Caddy", "x-forwarded-for" => "216.73.216.126", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.uiau7e.uncld.dev", method: "GET", owner: #PID<0.10091.0>, params: %{}, path_info: ["sources", "16", "force_download_pending"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.uiau7e.uncld.dev", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {10, 210, 0, 2}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"accept-encoding", "gzip, br, zstd, deflate"}, {"host", "pinchflat.uiau7e.uncld.dev"}, {"user-agent", "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)"}, {"via", "2.0 Caddy"}, {"x-forwarded-for", "216.73.216.126"}, {"x-forwarded-host", "pinchflat.uiau7e.uncld.dev"}, {"x-forwarded-proto", "https"} ], request_path: "/sources/16/force_download_pending", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GIcXQgG2zgLDu2sAAIHj"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.10090.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/16/force_download_pending", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 36430}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, zstd, deflate", "host" => "pinchflat.uiau7e.uncld.dev", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)", "via" => "2.0 Caddy", "x-forwarded-for" => "216.73.216.126", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/16/force_download_pending (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.10090.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/16/force_download_pending", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 36430}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, zstd, deflate", "host" => "pinchflat.uiau7e.uncld.dev", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)", "via" => "2.0 Caddy", "x-forwarded-for" => "216.73.216.126", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.uiau7e.uncld.dev", method: "GET", owner: #PID<0.10091.0>, params: %{}, path_info: ["sources", "16", "force_download_pending"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.uiau7e.uncld.dev", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {10, 210, 0, 2}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"accept-encoding", "gzip, br, zstd, deflate"}, {"host", "pinchflat.uiau7e.uncld.dev"}, {"user-agent", "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)"}, {"via", "2.0 Caddy"}, {"x-forwarded-for", "216.73.216.126"}, {"x-forwarded-host", "pinchflat.uiau7e.uncld.dev (truncated) 13:22:31.035 [debug] QUERY OK source="settings" db=0.1ms idle=3.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:22:31.035 [debug] QUERY OK source="settings" db=0.1ms idle=3.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:22:31.036 [debug] QUERY OK source="settings" db=0.1ms idle=3.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:22:31.037 [debug] QUERY OK source="media_profiles" db=0.2ms idle=3.1ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:22:31.047 [info] GET /sources/18/media/39312 13:22:31.047 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "39312", "source_id" => "18"} Pipelines: [:browser] 13:22:31.048 [debug] QUERY OK source="media_items" db=0.3ms idle=13.4ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [39312] 13:22:31.049 [debug] QUERY OK source="tasks" db=0.5ms queue=0.1ms idle=12.9ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [39312] 13:22:31.049 [debug] QUERY OK source="sources" db=0.8ms idle=12.7ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [18] 13:22:31.050 [debug] QUERY OK source="settings" db=0.4ms idle=13.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:22:31.050 [debug] QUERY OK source="settings" db=0.3ms idle=13.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:22:31.051 [debug] QUERY OK source="settings" db=0.4ms idle=3.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:22:31.053 [debug] QUERY OK source="media_profiles" db=0.6ms idle=3.5ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:22:31.055 [info] Sent 200 in 24ms 13:22:31.076 [info] Sent 200 in 28ms 13:22:31.567 [info] GET /sources/18/media/59108 13:22:31.568 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "59108", "source_id" => "18"} Pipelines: [:browser] 13:22:31.570 [debug] QUERY OK source="media_items" db=0.8ms queue=0.2ms idle=519.7ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [59108] 13:22:31.572 [debug] QUERY OK source="tasks" db=0.5ms queue=0.2ms idle=520.8ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [59108] 13:22:31.572 [debug] QUERY OK source="sources" db=0.9ms idle=520.6ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [18] 13:22:31.573 [debug] QUERY OK source="settings" db=0.2ms idle=521.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:22:31.574 [debug] QUERY OK source="settings" db=0.2ms queue=0.1ms idle=520.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:22:31.575 [debug] QUERY OK source="settings" db=0.3ms idle=5.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:22:31.577 [debug] QUERY OK source="media_profiles" db=0.3ms idle=5.5ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:22:31.581 [info] Sent 200 in 13ms 13:22:31.873 [info] GET /sources/16/media/10088/edit 13:22:31.873 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "10088", "source_id" => "16"} Pipelines: [:browser] 13:22:31.875 [debug] QUERY OK source="media_items" db=0.9ms queue=0.1ms idle=300.4ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [10088] 13:22:31.876 [debug] QUERY OK source="settings" db=0.5ms idle=301.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:22:31.877 [debug] QUERY OK source="settings" db=0.4ms idle=301.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:22:31.878 [debug] QUERY OK source="settings" db=0.3ms queue=0.1ms idle=300.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:22:31.881 [info] Sent 200 in 8ms 13:22:32.018 [info] GET /sources/18/media/59135 13:22:32.018 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "59135", "source_id" => "18"} Pipelines: [:browser] 13:22:32.020 [debug] QUERY OK source="media_items" db=1.0ms queue=0.1ms idle=412.4ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [59135] 13:22:32.022 [debug] QUERY OK source="tasks" db=0.5ms idle=146.0ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [59135] 13:22:32.022 [debug] QUERY OK source="sources" db=0.4ms idle=144.8ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [18] 13:22:32.023 [debug] QUERY OK source="settings" db=0.2ms idle=145.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:22:32.024 [debug] QUERY OK source="settings" db=0.2ms queue=0.1ms idle=144.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:22:32.025 [debug] QUERY OK source="settings" db=0.2ms queue=0.1ms idle=4.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:22:32.027 [debug] QUERY OK source="media_profiles" db=0.2ms idle=4.9ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:22:32.030 [info] Sent 200 in 12ms 13:22:32.182 [info] GET /sources/16/media/58871/edit 13:22:32.183 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "58871", "source_id" => "16"} Pipelines: [:browser] 13:22:32.184 [debug] QUERY OK source="media_items" db=0.5ms queue=0.1ms idle=161.8ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [58871] 13:22:32.186 [debug] QUERY OK source="settings" db=0.4ms queue=0.1ms idle=162.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:22:32.187 [debug] QUERY OK source="settings" db=0.2ms idle=162.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:22:32.188 [debug] QUERY OK source="settings" db=0.3ms queue=0.1ms idle=163.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:22:32.192 [info] Sent 200 in 10ms 13:22:32.317 [info] GET /sources/18/media/59132 13:22:32.318 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "59132", "source_id" => "18"} Pipelines: [:browser] 13:22:32.319 [debug] QUERY OK source="media_items" db=0.4ms queue=0.1ms idle=291.7ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [59132] 13:22:32.320 [debug] QUERY OK source="tasks" db=0.4ms idle=135.4ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [59132] 13:22:32.321 [debug] QUERY OK source="sources" db=0.7ms idle=133.9ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [18] 13:22:32.322 [debug] QUERY OK source="settings" db=0.4ms idle=134.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:22:32.322 [debug] QUERY OK source="settings" db=0.4ms idle=133.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:22:32.324 [debug] QUERY OK source="settings" db=0.7ms queue=0.1ms idle=3.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:22:32.325 [debug] QUERY OK source="media_profiles" db=0.2ms idle=4.7ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:22:32.327 [info] Sent 200 in 9ms 13:22:33.475 [info] GET /sources/23/media/21387 13:22:33.475 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "21387", "source_id" => "23"} Pipelines: [:browser] 13:22:33.476 [debug] QUERY OK source="media_items" db=0.5ms queue=0.1ms idle=1153.8ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [21387] 13:22:33.477 [debug] QUERY OK source="tasks" db=0.2ms queue=0.1ms idle=1154.5ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [21387] 13:22:33.478 [debug] QUERY OK source="sources" db=0.4ms idle=1153.3ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [23] 13:22:33.479 [debug] QUERY OK source="settings" db=0.4ms idle=1152.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:22:33.479 [debug] QUERY OK source="settings" db=0.4ms idle=869.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:22:33.481 [debug] QUERY OK source="settings" db=0.5ms idle=4.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:22:33.483 [debug] QUERY OK source="media_profiles" db=0.7ms idle=4.5ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:22:33.508 [info] Sent 200 in 33ms 13:22:42.639 [info] {"source":"oban","duration":1309,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:22:43.505 [info] GET /sources/3/media/43212/edit 13:22:43.505 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "43212", "source_id" => "3"} Pipelines: [:browser] 13:22:43.505 [info] GET /sources/18/media/59095/edit 13:22:43.506 [info] GET /sources/18/media/59135/edit 13:22:43.506 [info] GET /sources/18/media/39312/edit 13:22:43.506 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "59135", "source_id" => "18"} Pipelines: [:browser] 13:22:43.506 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "39312", "source_id" => "18"} Pipelines: [:browser] 13:22:43.506 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "59095", "source_id" => "18"} Pipelines: [:browser] 13:22:43.506 [info] GET /sources/18/media/59076/edit 13:22:43.506 [info] GET /sources/16/media/10082 13:22:43.507 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "59076", "source_id" => "18"} Pipelines: [:browser] 13:22:43.507 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "10082", "source_id" => "16"} Pipelines: [:browser] 13:22:43.507 [debug] QUERY OK source="media_items" db=1.2ms queue=0.3ms idle=872.6ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [43212] 13:22:43.509 [debug] QUERY OK source="media_items" db=1.8ms queue=0.1ms idle=694.0ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [59076] 13:22:43.509 [debug] QUERY OK source="media_items" db=2.0ms idle=693.9ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [59095] 13:22:43.509 [debug] QUERY OK source="media_items" db=2.7ms queue=0.1ms idle=693.6ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [39312] 13:22:43.509 [debug] QUERY OK source="settings" db=0.7ms queue=1.2ms idle=0.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:22:43.510 [debug] QUERY OK source="settings" db=0.6ms queue=0.1ms idle=0.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:22:43.511 [debug] QUERY OK source="media_items" db=3.1ms queue=0.6ms idle=0.0ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [10082] 13:22:43.511 [debug] QUERY OK source="media_items" db=4.1ms queue=0.1ms idle=867.7ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [59135] 13:22:43.511 [debug] QUERY OK source="settings" db=0.9ms queue=0.2ms idle=0.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:22:43.511 [debug] QUERY OK source="settings" db=1.4ms idle=0.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:22:43.512 [debug] QUERY OK source="tasks" db=0.9ms idle=0.3ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [10082] 13:22:43.512 [debug] QUERY OK source="settings" db=1.2ms queue=0.6ms idle=0.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:22:43.513 [debug] QUERY OK source="settings" db=2.9ms queue=0.3ms idle=0.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:22:43.513 [debug] QUERY OK source="settings" db=0.7ms queue=0.7ms idle=0.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:22:43.513 [debug] QUERY OK source="sources" db=2.2ms queue=0.1ms idle=0.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [16] 13:22:43.513 [debug] QUERY OK source="settings" db=1.5ms queue=0.3ms idle=0.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:22:43.513 [debug] QUERY OK source="settings" db=1.0ms queue=0.6ms idle=0.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:22:43.514 [debug] QUERY OK source="settings" db=0.9ms queue=0.6ms idle=0.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:22:43.515 [debug] QUERY OK source="settings" db=1.1ms queue=0.7ms idle=0.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:22:43.515 [info] Sent 200 in 10ms 13:22:43.515 [debug] QUERY OK source="settings" db=1.4ms queue=0.1ms idle=0.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:22:43.515 [debug] QUERY OK source="settings" db=1.6ms idle=0.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:22:43.515 [debug] QUERY OK source="settings" db=1.5ms idle=0.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:22:43.516 [info] Sent 200 in 9ms 13:22:43.516 [debug] QUERY OK source="settings" db=0.7ms queue=0.1ms idle=1.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:22:43.516 [debug] QUERY OK source="settings" db=0.7ms idle=0.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:22:43.517 [info] Sent 200 in 10ms 13:22:43.517 [debug] QUERY OK source="settings" db=1.0ms idle=0.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:22:43.518 [info] Sent 200 in 11ms 13:22:43.518 [debug] QUERY OK source="settings" db=0.4ms idle=1.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:22:43.518 [info] Sent 200 in 12ms 13:22:43.519 [debug] QUERY OK source="media_profiles" db=0.5ms idle=3.2ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:22:43.521 [info] Sent 200 in 14ms 13:22:44.340 [info] GET /sources/18/media/59041 13:22:44.341 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "59041", "source_id" => "18"} Pipelines: [:browser] 13:22:44.342 [debug] QUERY OK source="media_items" db=0.7ms queue=0.1ms idle=824.3ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [59041] 13:22:44.343 [debug] QUERY OK source="tasks" db=0.8ms idle=825.2ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [59041] 13:22:44.343 [debug] QUERY OK source="sources" db=0.9ms idle=824.4ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [18] 13:22:44.344 [debug] QUERY OK source="settings" db=0.4ms idle=824.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:22:44.345 [debug] QUERY OK source="settings" db=0.2ms idle=708.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:22:44.345 [debug] QUERY OK source="settings" db=0.3ms idle=3.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:22:44.347 [debug] QUERY OK source="media_profiles" db=1.1ms idle=2.8ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:22:44.349 [info] Sent 200 in 8ms 13:22:44.479 [info] GET /sources/18/media/59132/edit 13:22:44.480 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "59132", "source_id" => "18"} Pipelines: [:browser] 13:22:44.482 [debug] QUERY OK source="media_items" db=1.2ms queue=0.1ms idle=136.9ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [59132] 13:22:44.484 [debug] QUERY OK source="settings" db=0.9ms queue=0.1ms idle=138.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:22:44.484 [debug] QUERY OK source="settings" db=0.4ms idle=139.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:22:44.486 [debug] QUERY OK source="settings" db=0.6ms idle=139.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:22:44.487 [info] Sent 200 in 8ms 13:22:44.635 [info] GET /sources/18/media/10498/edit 13:22:44.636 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "10498", "source_id" => "18"} Pipelines: [:browser] 13:22:44.638 [debug] QUERY OK source="media_items" db=1.7ms idle=288.9ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [10498] 13:22:44.639 [debug] QUERY OK source="settings" db=0.4ms queue=0.2ms idle=155.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:22:44.640 [debug] QUERY OK source="settings" db=0.2ms queue=0.1ms idle=155.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:22:44.642 [debug] QUERY OK source="settings" db=0.2ms queue=0.1ms idle=155.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:22:44.645 [info] Sent 200 in 9ms 13:22:44.784 [info] GET /sources/18/force_download_pending 13:22:44.785 [debug] QUERY OK source="settings" db=0.6ms queue=0.1ms idle=146.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:22:44.786 [debug] QUERY OK source="settings" db=0.5ms idle=146.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:22:44.786 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 13:22:44.787 [error] #PID<0.10144.0> running PinchflatWeb.Endpoint (connection #PID<0.10124.0>, stream id 5) terminated Server: pinchflat.uiau7e.uncld.dev:80 (http) Request: GET /sources/18/force_download_pending ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/18/force_download_pending (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.10124.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/18/force_download_pending", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 50196}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, zstd, deflate", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYUFlHYnBuOElGaE5mckZ1UHRWNUVDSmNK.jfnn_wSjAGTZ_OcFtCYfYE-98cGQ3Ojn6zpNFK40DzU", "host" => "pinchflat.uiau7e.uncld.dev", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)", "via" => "2.0 Caddy", "x-forwarded-for" => "216.73.216.126", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 5, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{ "_pinchflat_key" => "SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYUFlHYnBuOElGaE5mckZ1UHRWNUVDSmNK.jfnn_wSjAGTZ_OcFtCYfYE-98cGQ3Ojn6zpNFK40DzU" }, halted: false, host: "pinchflat.uiau7e.uncld.dev", method: "GET", owner: #PID<0.10144.0>, params: %{}, path_info: ["sources", "18", "force_download_pending"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.uiau7e.uncld.dev", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {10, 210, 0, 2}, req_cookies: %{ "_pinchflat_key" => "SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYUFlHYnBuOElGaE5mckZ1UHRWNUVDSmNK.jfnn_wSjAGTZ_OcFtCYfYE-98cGQ3Ojn6zpNFK40DzU" }, req_headers: [ {"accept", "*/*"}, {"accept-encoding", "gzip, br, zstd, deflate"}, {"cookie", "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYUFlHYnBuOElGaE5mckZ1UHRWNUVDSmNK.jfnn_wSjAGTZ_OcFtCYfYE-98cGQ3Ojn6zpNFK40DzU"}, {"host", "pinchflat.uiau7e.uncld.dev"}, {"user-agent", "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)"}, {"via", "2.0 Caddy"}, {"x-forwarded-for", "216.73.216.126"}, {"x-forwarded-host", "pinchflat.uiau7e.uncld.dev"}, {"x-forwarded-proto", "https"} ], request_path: "/sources/18/force_download_pending", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GIcXRTV_X_wgtVEAAMYi"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.10124.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/18/force_download_pending", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 50196}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, zstd, deflate", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYUFlHYnBuOElGaE5mckZ1UHRWNUVDSmNK.jfnn_wSjAGTZ_OcFtCYfYE-98cGQ3Ojn6zpNFK40DzU", "host" => "pinchflat.uiau7e.uncld.dev", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)", "via" => "2.0 Caddy", "x-forwarded-for" => "216.73.216.126", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 5, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/18/force_download_pending (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.10124.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/18/force_download_pending", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 50196}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, zstd, deflate", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYUFlHYnBuOElGaE5mckZ1UHRWNUVDSmNK.jfnn_wSjAGTZ_OcFtCYfYE-98cGQ3Ojn6zpNFK40DzU", "host" => "pinchflat.uiau7e.uncld.dev", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)", "via" => "2.0 Caddy", "x-forwarded-for" => "216.73.216.126", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 5, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{ "_pinchflat_key" => "SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYUFlHYnBuOElGaE5mckZ1UHRWNUVDSmNK.jfnn_wSjAGTZ_OcFtCYfYE-98cGQ3Ojn6zpNFK40DzU" }, halted: false, host: "pinchflat.uiau7e.uncld.dev", method: "GET", owner: #PID<0.10144.0>, params: %{}, path_info: ["sources", "18", "force_download_pending"] (truncated) 13:22:44.932 [info] GET /sources/18/media/10424/edit 13:22:44.932 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "10424", "source_id" => "18"} Pipelines: [:browser] 13:22:44.934 [debug] QUERY OK source="media_items" db=0.5ms queue=0.1ms idle=293.5ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [10424] 13:22:44.936 [debug] QUERY OK source="settings" db=0.4ms queue=0.1ms idle=294.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:22:44.936 [debug] QUERY OK source="settings" db=0.2ms idle=294.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:22:44.937 [debug] QUERY OK source="settings" db=0.2ms idle=151.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:22:44.939 [info] Sent 200 in 6ms 13:23:00.149 [info] {"source":"oban","duration":361,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 13:23:10.878 [info] GET /sources/23/media/21394 13:23:10.879 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "21394", "source_id" => "23"} Pipelines: [:browser] 13:23:10.880 [debug] QUERY OK source="media_items" db=0.8ms idle=1066.3ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [21394] 13:23:10.881 [debug] QUERY OK source="tasks" db=0.4ms idle=155.5ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [21394] 13:23:10.881 [debug] QUERY OK source="sources" db=0.6ms idle=67.9ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [23] 13:23:10.882 [debug] QUERY OK source="settings" db=0.3ms idle=69.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:23:10.882 [debug] QUERY OK source="settings" db=0.1ms idle=69.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:23:10.883 [debug] QUERY OK source="settings" db=0.2ms idle=2.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:23:10.884 [debug] QUERY OK source="media_profiles" db=0.2ms idle=2.9ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:23:10.903 [info] Sent 200 in 24ms 13:23:12.643 [info] {"source":"oban","duration":3546,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:23:42.645 [info] {"source":"oban","duration":1582,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:23:42.903 [info] GET /sources/11/media/54288 13:23:42.903 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "54288", "source_id" => "11"} Pipelines: [:browser] 13:23:42.905 [debug] QUERY OK source="media_items" db=0.9ms idle=1091.2ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [54288] 13:23:42.906 [debug] QUERY OK source="tasks" db=0.5ms idle=260.1ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [54288] 13:23:42.906 [debug] QUERY OK source="sources" db=1.0ms idle=94.6ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [11] 13:23:42.907 [debug] QUERY OK source="settings" db=0.4ms idle=94.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:23:42.908 [debug] QUERY OK source="settings" db=0.4ms queue=0.1ms idle=95.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:23:42.910 [debug] QUERY OK source="settings" db=0.3ms idle=4.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:23:42.912 [debug] QUERY OK source="media_profiles" db=0.4ms idle=5.3ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:23:42.938 [info] Sent 200 in 34ms 13:23:43.824 [info] {"args":{"id":7},"id":202947,"meta":{},"system_time":1767407023824684437,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 13:23:43.826 [debug] QUERY OK source="sources" db=0.5ms queue=0.1ms idle=916.7ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [7] 13:23:43.826 [debug] QUERY OK source="settings" db=0.5ms idle=916.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:23:43.827 [debug] QUERY OK source="media_profiles" db=0.6ms idle=915.1ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:23:43.828 [debug] QUERY OK source="settings" db=0.4ms idle=11.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:23:43.828 [debug] Fetching recent media IDs from YouTube API for playlist: UUwnKziETDbHJtx78nIkfYug 13:23:43.829 [debug] QUERY OK source="settings" db=0.3ms idle=4.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:23:43.829 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 13:23:44.222 [debug] QUERY OK source="media_items" db=2.8ms idle=393.5ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND m0."media_id" IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [7, "mC5NdpSMDks", "ccV3u3D9ONE", "cVCDjEfPzII", "n0X2rqzKTgM", "dcuCvRNqmpY", "GG1qX8jHKGo", "k9wkleHFvo0", "CWoYVlMuUNQ", "xlfeieH4z38", "eZM2Ik-FHEU", "CtcTG8-qzbA", "6Mmj7mf1qlg", "InwVO9qBjqs", "1Hp-W2bpPrw", "VtE5sTpkn7k", "8dOJypt2F70", "Evm4t4prtWo", "taLzgvbrnv0", "rgCrnyf5JEI", "PHhc-48JT3U", "vFKjpNNjNGw", "VJQlOI70ubw", "E5cfNq0DO90", "DNBGSsZatbY", "pna1NyaHTls", "CUHao-vA98g", "cPN9BJe_RQw", "rCBt4XgCX-0", "f4g6KKGMmEI", "P_I5Jsc3xRw", "fPaU2l7RktM", "0PVwt01b6fs", "0qMDM4Y4Hwo", "Ld285PDsHvs", "p1mQC71wplA", "9k5JhKK6WlA", "WPxrifmtlQI", "nVNBmK7a1y8", "QDnMYztaxfI", "gxsaWhXG1Gg", "RMtkKiyrXic", "JKlJ6OW67Bk", "Sjmb8O-fRWI", "qZhD4G7ENSY", "OTWDzMjgsEY", "Y_eCu_pW6-4", "DplgNsjOPRg", "l6hHI3AVoYM", "joAhvj7dfsc", ...] 13:23:44.228 [debug] QUERY OK source="media_items" db=4.4ms idle=397.4ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [7] 13:23:44.233 [debug] QUERY OK source="tasks" db=0.5ms idle=403.2ms INSERT INTO "tasks" ("job_id","media_item_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [202968, 8350, ~U[2026-01-03 02:23:44Z], ~U[2026-01-03 02:23:44Z]] 13:23:44.236 [debug] QUERY OK source="tasks" db=0.3ms idle=4.5ms INSERT INTO "tasks" ("job_id","media_item_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [202969, 8380, ~U[2026-01-03 02:23:44Z], ~U[2026-01-03 02:23:44Z]] 13:23:44.241 [debug] QUERY OK source="tasks" db=1.2ms idle=3.9ms INSERT INTO "tasks" ("job_id","media_item_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [202970, 8401, ~U[2026-01-03 02:23:44Z], ~U[2026-01-03 02:23:44Z]] 13:23:44.242 [info] {"args":{"id":8350},"id":202968,"meta":{},"system_time":1767407024242298307,"max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 13:23:44.242 [info] {"args":{"id":8380},"id":202969,"meta":{},"system_time":1767407024242384355,"max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 13:23:44.245 [debug] QUERY OK source="media_items" db=2.7ms idle=3.0ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [8380] 13:23:44.245 [debug] QUERY OK source="media_items" db=3.1ms idle=3.4ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [8350] 13:23:44.246 [info] User scripts lifecyle file either not present or is empty. Skipping. 13:23:44.246 [info] User scripts lifecyle file either not present or is empty. Skipping. 13:23:44.247 [debug] QUERY OK source="sources" db=0.5ms queue=0.2ms idle=3.9ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [7] 13:23:44.247 [debug] QUERY OK source="sources" db=1.3ms queue=0.2ms idle=0.6ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [7] 13:23:44.248 [debug] QUERY OK source="media_profiles" db=0.8ms idle=1.3ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:23:44.248 [debug] QUERY OK source="tasks" db=0.5ms idle=1.7ms INSERT INTO "tasks" ("job_id","media_item_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [202971, 8418, ~U[2026-01-03 02:23:44Z], ~U[2026-01-03 02:23:44Z]] 13:23:44.248 [debug] QUERY OK source="media_profiles" db=0.5ms idle=1.1ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:23:44.249 [debug] QUERY OK source="media_items" db=0.6ms idle=0.8ms SELECT 1 FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) LIMIT 1 [8380] 13:23:44.250 [debug] QUERY OK source="media_metadata" db=0.3ms idle=1.7ms SELECT m0."id", m0."metadata_filepath", m0."thumbnail_filepath", m0."media_item_id", m0."inserted_at", m0."updated_at", m0."media_item_id" FROM "media_metadata" AS m0 WHERE (m0."media_item_id" = ?) [8380] 13:23:44.250 [debug] QUERY OK source="media_items" db=1.5ms idle=1.2ms SELECT 1 FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) LIMIT 1 [8350] 13:23:44.251 [debug] QUERY OK source="media_profiles" db=0.8ms idle=1.7ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:23:44.251 [debug] QUERY OK source="settings" db=0.1ms idle=1.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:23:44.252 [debug] QUERY OK source="settings" db=0.1ms idle=1.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:23:44.252 [debug] QUERY OK source="media_metadata" db=0.4ms idle=1.3ms SELECT m0."id", m0."metadata_filepath", m0."thumbnail_filepath", m0."media_item_id", m0."inserted_at", m0."updated_at", m0."media_item_id" FROM "media_metadata" AS m0 WHERE (m0."media_item_id" = ?) [8350] 13:23:44.253 [debug] Running yt-dlp command for action: get_downloadable_status 13:23:44.253 [debug] QUERY OK source="tasks" db=1.0ms idle=1.4ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [202972, 7, ~U[2026-01-03 02:23:44Z], ~U[2026-01-03 02:23:44Z]] 13:23:44.253 [debug] QUERY OK source="media_profiles" db=0.7ms idle=1.1ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:23:44.254 [debug] QUERY OK source="settings" db=0.5ms idle=1.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:23:44.255 [info] {"args":{"id":7},"id":202947,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":429244,"event":"job:stop","queue_time":380441,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 13:23:44.255 [debug] QUERY OK source="settings" db=0.5ms idle=1.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:23:44.255 [debug] QUERY OK source="settings" db=0.4ms idle=1.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:23:44.256 [debug] QUERY OK source="settings" db=0.5ms idle=0.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:23:44.256 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=bhkmFO8DikY --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/07/64/0764ab1f9233d6304dafcb44f575b8445ec50d9e8faae7980a13d3342a645087.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 13:23:44.256 [debug] QUERY OK source="settings" db=0.9ms idle=1.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:23:44.257 [debug] Running yt-dlp command for action: get_downloadable_status 13:23:44.258 [debug] QUERY OK source="settings" db=0.2ms idle=3.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:23:44.259 [debug] QUERY OK source="settings" db=0.5ms idle=3.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:23:44.259 [debug] QUERY OK source="settings" db=0.5ms idle=3.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:23:44.260 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=aCES82xfgdw --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/5b/94/5b94c5e78f89ca0e7d27a973fe8b58483e4bddea07be467dc86f6f62dbdeadec.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 13:23:49.551 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=bhkmFO8DikY --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/07/64/0764ab1f9233d6304dafcb44f575b8445ec50d9e8faae7980a13d3342a645087.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 1 with: ERROR: [youtube] bhkmFO8DikY: Sign in to confirm your age. This video may be inappropriate for some users. Use --cookies-from-browser or --cookies for the authentication. See https://github.com/yt-dlp/yt-dlp/wiki/FAQ#how-do-i-pass-cookies-to-yt-dlp for how to manually pass cookies. Also see https://github.com/yt-dlp/yt-dlp/wiki/Extractors#exporting-youtube-cookies for tips on effectively exporting YouTube cookies 13:23:49.551 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=aCES82xfgdw --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/5b/94/5b94c5e78f89ca0e7d27a973fe8b58483e4bddea07be467dc86f6f62dbdeadec.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 1 with: ERROR: [youtube] aCES82xfgdw: Sign in to confirm your age. This video may be inappropriate for some users. Use --cookies-from-browser or --cookies for the authentication. See https://github.com/yt-dlp/yt-dlp/wiki/FAQ#how-do-i-pass-cookies-to-yt-dlp for how to manually pass cookies. Also see https://github.com/yt-dlp/yt-dlp/wiki/Extractors#exporting-youtube-cookies for tips on effectively exporting YouTube cookies 13:23:49.552 [debug] QUERY OK source="settings" db=0.3ms queue=0.1ms idle=1739.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:23:49.553 [debug] QUERY OK source="settings" db=0.4ms queue=0.1ms idle=1739.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:23:49.553 [debug] QUERY OK source="settings" db=0.1ms idle=1739.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:23:49.553 [debug] QUERY OK source="settings" db=0.1ms idle=1721.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:23:49.554 [debug] Running yt-dlp command for action: get_downloadable_status 13:23:49.554 [debug] Running yt-dlp command for action: get_downloadable_status 13:23:49.555 [debug] QUERY OK source="settings" db=0.1ms idle=2.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:23:49.556 [debug] QUERY OK source="settings" db=0.4ms idle=719.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:23:49.556 [debug] QUERY OK source="settings" db=0.3ms idle=2.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:23:49.556 [debug] QUERY OK source="settings" db=0.2ms idle=2.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:23:49.556 [debug] QUERY OK source="settings" db=0.4ms idle=2.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:23:49.557 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=aCES82xfgdw --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/6e/99/6e997ec877a55e64827fa61261f51eb781c0a94390ba85c4166d30ccc2941b6d.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 13:23:49.557 [debug] QUERY OK source="settings" db=0.6ms idle=0.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:23:49.557 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=bhkmFO8DikY --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/01/03/0103b736ea42d4b9807c3ef41ebcc94355552b1405d8dfbc05243471e5aaa9e1.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 13:23:50.635 [info] GET /media/9f997d72-2552-4792-970f-e46a1ab24810/stream 13:23:50.635 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.stream/2 Parameters: %{"uuid" => "9f997d72-2552-4792-970f-e46a1ab24810"} Pipelines: [:maybe_basic_auth] 13:23:50.635 [info] GET /sources/16/media/58881/edit 13:23:50.636 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "58881", "source_id" => "16"} Pipelines: [:browser] 13:23:50.636 [info] GET /sources/6/media/58860/force_download 13:23:50.636 [info] GET /sources/3/media/58874/force_download 13:23:50.637 [info] GET /sources/new 13:23:50.637 [debug] QUERY OK source="media_items" db=0.9ms idle=1079.8ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [58881] 13:23:50.637 [debug] Processing with PinchflatWeb.Sources.SourceController.new/2 Parameters: %{"template_id" => "21"} Pipelines: [:browser] 13:23:50.637 [debug] QUERY OK source="settings" db=0.7ms idle=1079.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:23:50.638 [debug] QUERY OK source="media_items" db=1.8ms queue=0.2ms idle=1079.7ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."uuid" = ?) ["9f997d72-2552-4792-970f-e46a1ab24810"] 13:23:50.638 [info] GET /sources/16/media/58877/force_download 13:23:50.638 [debug] QUERY OK source="settings" db=1.5ms queue=0.1ms idle=1079.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:23:50.639 [debug] QUERY OK source="settings" db=1.3ms queue=0.1ms idle=798.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:23:50.639 [debug] QUERY OK source="settings" db=1.3ms idle=0.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:23:50.639 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 13:23:50.641 [debug] QUERY OK source="settings" db=1.9ms queue=0.1ms idle=0.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:23:50.641 [debug] QUERY OK source="sources" db=2.3ms queue=0.1ms idle=1.3ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [21] 13:23:50.641 [debug] QUERY OK source="settings" db=2.4ms queue=0.1ms idle=1.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:23:50.643 [debug] QUERY OK source="settings" db=3.5ms queue=0.1ms idle=0.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:23:50.644 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 13:23:50.641 [error] #PID<0.10176.0> running PinchflatWeb.Endpoint (connection #PID<0.10175.0>, stream id 1) terminated Server: pinchflat.uiau7e.uncld.dev:80 (http) Request: GET /sources/3/media/58874/force_download ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/3/media/58874/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.10175.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/3/media/58874/force_download", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 50310}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, zstd, deflate", "host" => "pinchflat.uiau7e.uncld.dev", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)", "via" => "2.0 Caddy", "x-forwarded-for" => "216.73.216.126", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.uiau7e.uncld.dev", method: "GET", owner: #PID<0.10176.0>, params: %{}, path_info: ["sources", "3", "media", "58874", "force_download"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.uiau7e.uncld.dev", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {10, 210, 0, 2}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"accept-encoding", "gzip, br, zstd, deflate"}, {"host", "pinchflat.uiau7e.uncld.dev"}, {"user-agent", "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)"}, {"via", "2.0 Caddy"}, {"x-forwarded-for", "216.73.216.126"}, {"x-forwarded-host", "pinchflat.uiau7e.uncld.dev"}, {"x-forwarded-proto", "https"} ], request_path: "/sources/3/media/58874/force_download", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GIcXVIqgYWMo7pYAAdah"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.10175.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/3/media/58874/force_download", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 50310}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, zstd, deflate", "host" => "pinchflat.uiau7e.uncld.dev", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)", "via" => "2.0 Caddy", "x-forwarded-for" => "216.73.216.126", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/3/media/58874/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.10175.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/3/media/58874/force_download", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 50310}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, zstd, deflate", "host" => "pinchflat.uiau7e.uncld.dev", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)", "via" => "2.0 Caddy", "x-forwarded-for" => "216.73.216.126", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.uiau7e.uncld.dev", method: "GET", owner: #PID<0.10176.0>, params: %{}, path_info: ["sources", "3", "media", "58874", "force_download"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.uiau7e.uncld.dev", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {10, 210, 0, 2}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"accept-encoding", "gzip, br, zstd, deflate"}, {"host", "pinchflat.uiau7e.uncld.dev"}, {"user-agent", "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)"}, {"via", "2.0 Caddy"}, {"x-forwarded-for", "216.73.216.126"}, {"x-forwa (truncated) 13:23:50.645 [debug] QUERY OK source="settings" db=1.0ms idle=2.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:23:50.645 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 13:23:50.645 [debug] QUERY OK source="settings" db=0.9ms idle=3.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:23:50.645 [debug] QUERY OK source="media_profiles" db=1.3ms queue=0.1ms idle=4.7ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at" FROM "media_profiles" AS m0 ORDER BY m0."name" [] 13:23:50.647 [info] Sent 200 in 11ms 13:23:50.647 [debug] QUERY OK source="settings" db=0.7ms queue=0.2ms idle=4.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:23:50.645 [error] #PID<0.10174.0> running PinchflatWeb.Endpoint (connection #PID<0.10172.0>, stream id 1) terminated Server: pinchflat.uiau7e.uncld.dev:80 (http) Request: GET /sources/6/media/58860/force_download ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/6/media/58860/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.10172.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/6/media/58860/force_download", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 50278}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, zstd, deflate", "host" => "pinchflat.uiau7e.uncld.dev", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)", "via" => "2.0 Caddy", "x-forwarded-for" => "216.73.216.126", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.uiau7e.uncld.dev", method: "GET", owner: #PID<0.10174.0>, params: %{}, path_info: ["sources", "6", "media", "58860", "force_download"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.uiau7e.uncld.dev", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {10, 210, 0, 2}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"accept-encoding", "gzip, br, zstd, deflate"}, {"host", "pinchflat.uiau7e.uncld.dev"}, {"user-agent", "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)"}, {"via", "2.0 Caddy"}, {"x-forwarded-for", "216.73.216.126"}, {"x-forwarded-host", "pinchflat.uiau7e.uncld.dev"}, {"x-forwarded-proto", "https"} ], request_path: "/sources/6/media/58860/force_download", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GIcXVIqXzcIpGEEAAMei"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.10172.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/6/media/58860/force_download", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 50278}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, zstd, deflate", "host" => "pinchflat.uiau7e.uncld.dev", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)", "via" => "2.0 Caddy", "x-forwarded-for" => "216.73.216.126", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/6/media/58860/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.10172.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/6/media/58860/force_download", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 50278}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, zstd, deflate", "host" => "pinchflat.uiau7e.uncld.dev", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)", "via" => "2.0 Caddy", "x-forwarded-for" => "216.73.216.126", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.uiau7e.uncld.dev", method: "GET", owner: #PID<0.10174.0>, params: %{}, path_info: ["sources", "6", "media", "58860", "force_download"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.uiau7e.uncld.dev", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {10, 210, 0, 2}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"accept-encoding", "gzip, br, zstd, deflate"}, {"host", "pinchflat.uiau7e.uncld.dev"}, {"user-agent", "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)"}, {"via", "2.0 Caddy"}, {"x-forwarded-for", "216.73.216.126"}, {"x-forwa (truncated) 13:23:50.650 [debug] QUERY OK source="settings" db=1.1ms queue=0.3ms idle=5.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:23:50.652 [debug] QUERY OK source="settings" db=1.7ms queue=0.1ms idle=4.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:23:50.653 [debug] QUERY OK source="settings" db=0.4ms idle=7.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:23:50.649 [error] #PID<0.10180.0> running PinchflatWeb.Endpoint (connection #PID<0.10179.0>, stream id 1) terminated Server: pinchflat.uiau7e.uncld.dev:80 (http) Request: GET /sources/16/media/58877/force_download ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/16/media/58877/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.10179.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/16/media/58877/force_download", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 50322}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, zstd, deflate", "host" => "pinchflat.uiau7e.uncld.dev", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)", "via" => "2.0 Caddy", "x-forwarded-for" => "216.73.216.126", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.uiau7e.uncld.dev", method: "GET", owner: #PID<0.10180.0>, params: %{}, path_info: ["sources", "16", "media", "58877", "force_download"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.uiau7e.uncld.dev", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {10, 210, 0, 2}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"accept-encoding", "gzip, br, zstd, deflate"}, {"host", "pinchflat.uiau7e.uncld.dev"}, {"user-agent", "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)"}, {"via", "2.0 Caddy"}, {"x-forwarded-for", "216.73.216.126"}, {"x-forwarded-host", "pinchflat.uiau7e.uncld.dev"}, {"x-forwarded-proto", "https"} ], request_path: "/sources/16/media/58877/force_download", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GIcXVIq84coP2YsAAMfC"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.10179.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/16/media/58877/force_download", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 50322}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, zstd, deflate", "host" => "pinchflat.uiau7e.uncld.dev", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)", "via" => "2.0 Caddy", "x-forwarded-for" => "216.73.216.126", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/16/media/58877/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.10179.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/16/media/58877/force_download", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 50322}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, zstd, deflate", "host" => "pinchflat.uiau7e.uncld.dev", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)", "via" => "2.0 Caddy", "x-forwarded-for" => "216.73.216.126", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.uiau7e.uncld.dev", method: "GET", owner: #PID<0.10180.0>, params: %{}, path_info: ["sources", "16", "media", "58877", "force_download"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.uiau7e.uncld.dev", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {10, 210, 0, 2}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"accept-encoding", "gzip, br, zstd, deflate"}, {"host", "pinchflat.uiau7e.uncld.dev"}, {"user-agent", "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)"}, {"via", "2.0 Caddy"}, {"x-forwarded-for", "216.73.216.126"}, (truncated) 13:23:50.654 [debug] Invalid range request for media item: 9f997d72-2552-4792-970f-e46a1ab24810 - serving full file 13:23:50.654 [info] Sent 200 in 19ms 13:23:50.656 [debug] QUERY OK source="settings" db=0.6ms idle=9.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:23:50.659 [info] Sent 200 in 21ms 13:23:51.023 [info] GET /sources/new 13:23:51.023 [debug] Processing with PinchflatWeb.Sources.SourceController.new/2 Parameters: %{"template_id" => "16"} Pipelines: [:browser] 13:23:51.024 [debug] QUERY OK source="sources" db=0.4ms idle=373.3ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [16] 13:23:51.024 [debug] QUERY OK source="media_profiles" db=0.3ms idle=371.9ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at" FROM "media_profiles" AS m0 ORDER BY m0."name" [] 13:23:51.026 [debug] QUERY OK source="settings" db=1.0ms idle=371.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:23:51.027 [debug] QUERY OK source="settings" db=0.7ms idle=370.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:23:51.028 [debug] QUERY OK source="settings" db=0.8ms idle=185.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:23:51.029 [debug] QUERY OK source="settings" db=0.4ms idle=5.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:23:51.030 [debug] QUERY OK source="settings" db=0.3ms idle=5.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:23:51.033 [info] Sent 200 in 10ms 13:23:51.173 [info] GET /sources/new 13:23:51.173 [debug] Processing with PinchflatWeb.Sources.SourceController.new/2 Parameters: %{"template_id" => "18"} Pipelines: [:browser] 13:23:51.174 [debug] QUERY OK source="sources" db=0.7ms idle=147.8ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [18] 13:23:51.175 [debug] QUERY OK source="media_profiles" db=0.9ms idle=147.2ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at" FROM "media_profiles" AS m0 ORDER BY m0."name" [] 13:23:51.176 [debug] QUERY OK source="settings" db=0.4ms idle=147.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:23:51.177 [debug] QUERY OK source="settings" db=0.3ms idle=147.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:23:51.178 [debug] QUERY OK source="settings" db=0.3ms idle=147.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:23:51.178 [debug] QUERY OK source="settings" db=0.4ms idle=3.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:23:51.179 [debug] QUERY OK source="settings" db=0.1ms idle=3.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:23:51.182 [info] Sent 200 in 8ms 13:23:51.324 [info] GET /sources/21/media/58974/force_download 13:23:51.326 [debug] QUERY OK source="settings" db=1.2ms queue=0.2ms idle=148.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:23:51.327 [debug] QUERY OK source="settings" db=0.5ms idle=149.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:23:51.327 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 13:23:51.328 [error] #PID<0.10183.0> running PinchflatWeb.Endpoint (connection #PID<0.10177.0>, stream id 4) terminated Server: pinchflat.uiau7e.uncld.dev:80 (http) Request: GET /sources/21/media/58974/force_download ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/21/media/58974/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.10177.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/21/media/58974/force_download", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 50312}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, zstd, deflate", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYOXQtSDdZSGZxOUdUaXFEbTNYVjVmaW9q.prYsjdNOdrnQMrfqwpYe1DSNprHcuK6Cit6lwobhp9g", "host" => "pinchflat.uiau7e.uncld.dev", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)", "via" => "2.0 Caddy", "x-forwarded-for" => "216.73.216.126", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 4, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{ "_pinchflat_key" => "SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYOXQtSDdZSGZxOUdUaXFEbTNYVjVmaW9q.prYsjdNOdrnQMrfqwpYe1DSNprHcuK6Cit6lwobhp9g" }, halted: false, host: "pinchflat.uiau7e.uncld.dev", method: "GET", owner: #PID<0.10183.0>, params: %{}, path_info: ["sources", "21", "media", "58974", "force_download"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.uiau7e.uncld.dev", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {10, 210, 0, 2}, req_cookies: %{ "_pinchflat_key" => "SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYOXQtSDdZSGZxOUdUaXFEbTNYVjVmaW9q.prYsjdNOdrnQMrfqwpYe1DSNprHcuK6Cit6lwobhp9g" }, req_headers: [ {"accept", "*/*"}, {"accept-encoding", "gzip, br, zstd, deflate"}, {"cookie", "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYOXQtSDdZSGZxOUdUaXFEbTNYVjVmaW9q.prYsjdNOdrnQMrfqwpYe1DSNprHcuK6Cit6lwobhp9g"}, {"host", "pinchflat.uiau7e.uncld.dev"}, {"user-agent", "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)"}, {"via", "2.0 Caddy"}, {"x-forwarded-for", "216.73.216.126"}, {"x-forwarded-host", "pinchflat.uiau7e.uncld.dev"}, {"x-forwarded-proto", "https"} ], request_path: "/sources/21/media/58974/force_download", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GIcXVLOa1inoCZAAAdeB"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.10177.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/21/media/58974/force_download", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 50312}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, zstd, deflate", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYOXQtSDdZSGZxOUdUaXFEbTNYVjVmaW9q.prYsjdNOdrnQMrfqwpYe1DSNprHcuK6Cit6lwobhp9g", "host" => "pinchflat.uiau7e.uncld.dev", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)", "via" => "2.0 Caddy", "x-forwarded-for" => "216.73.216.126", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 4, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/21/media/58974/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.10177.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/21/media/58974/force_download", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 50312}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, zstd, deflate", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYOXQtSDdZSGZxOUdUaXFEbTNYVjVmaW9q.prYsjdNOdrnQMrfqwpYe1DSNprHcuK6Cit6lwobhp9g", "host" => "pinchflat.uiau7e.uncld.dev", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)", "via" => "2.0 Caddy", "x-forwarded-for" => "216.73.216.126", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 4, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{ "_pinchflat_key" => "SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYOXQtSDdZSGZxOUdUaXFEbTNYVjVmaW9q.prYsjdNOdrnQMrfqwpYe1DSNprHcuK6Cit6lwobhp9g" }, halted: false, host: "pinchflat.uiau7e.uncld.dev", method: "GET", owner: #PID<0.10183.0>, params: %{}, path_info: ["sou (truncated) 13:23:51.474 [info] GET /sources/new 13:23:51.474 [debug] Processing with PinchflatWeb.Sources.SourceController.new/2 Parameters: %{"template_id" => "3"} Pipelines: [:browser] 13:23:51.476 [debug] QUERY OK source="sources" db=1.0ms idle=297.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [3] 13:23:51.476 [debug] QUERY OK source="media_profiles" db=0.3ms idle=297.4ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at" FROM "media_profiles" AS m0 ORDER BY m0."name" [] 13:23:51.477 [debug] QUERY OK source="settings" db=0.3ms idle=297.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:23:51.478 [debug] QUERY OK source="settings" db=0.2ms idle=151.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:23:51.478 [debug] QUERY OK source="settings" db=0.4ms idle=151.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:23:51.479 [debug] QUERY OK source="settings" db=0.3ms idle=3.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:23:51.480 [debug] QUERY OK source="settings" db=0.2ms idle=3.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:23:51.484 [info] Sent 200 in 9ms 13:23:51.624 [info] GET /sources/18/media/50796/edit 13:23:51.625 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "50796", "source_id" => "18"} Pipelines: [:browser] 13:23:51.626 [debug] QUERY OK source="media_items" db=0.5ms idle=147.8ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [50796] 13:23:51.626 [debug] QUERY OK source="settings" db=0.2ms idle=148.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:23:51.627 [debug] QUERY OK source="settings" db=0.1ms idle=148.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:23:51.627 [debug] QUERY OK source="settings" db=0.2ms idle=147.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:23:51.629 [info] Sent 200 in 4ms 13:23:51.854 [info] {"args":{"id":24},"id":202948,"meta":{},"system_time":1767407031854607331,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 13:23:51.855 [debug] QUERY OK source="sources" db=0.5ms idle=228.3ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [24] 13:23:51.856 [debug] QUERY OK source="settings" db=0.4ms idle=228.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:23:51.857 [debug] QUERY OK source="media_profiles" db=0.6ms idle=228.8ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:23:51.858 [debug] QUERY OK source="settings" db=0.7ms idle=10.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:23:51.858 [debug] Fetching recent media IDs from YouTube API for playlist: UUNTjSZfAK117b2kFGNCJfdA 13:23:51.859 [debug] QUERY OK source="settings" db=0.4ms queue=0.1ms idle=4.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:23:51.859 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 13:23:52.261 [debug] QUERY OK source="media_items" db=2.0ms idle=404.0ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND m0."media_id" IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [24, "2J48c2sukbo", "zq9gpqgWFv8", "EWdphas_OP4", "-U2sQ3e3R-0", "XdytKwHuG_8", "t-hori2Io14", "Xbemvi42Ngs", "91m4MQw_sZI", "GfUIbPqAMQs", "4VpVt3zdvL8", "q6Kd5C7O-F8", "EV6DSqTOXM0", "mMvfBUNNKIY", "C215grXAMCk", "_x6TE7hbE1k", "vycMxLco0a0", "lJWhisaNv8E", "4Blxc8mVzQs", "ztqcWc5aaks", "0Dvn039qD8I", "Vx69evZOEAE", "4dzZ44-xVds", "Rews5WNxiNk", "f-BFFWzh9uE", "RfJSMWHO0tY", "gMeUOURvDP8", "LEiL1np9sSM", "F-QeDtQ8Gy4", "9FSIF281OAo", "Shav52BfzWk", "dsCfQ3y5tHQ", "0rpt5sMb7cw", "Fe7Y152ak3Y", "HEuablkqrCg", "BRUTYHBJ_Z4", "gpaV4bgEG-g", "ppjFdEbIS4g", "lEhEMRA17bg", "tpIXmmV4ib4", "LBYQ_NLVKCw", "JsdM3k3QiPc", "TNmSVjGyZx0", "OMVYZziNjhc", "uyfyFRvng3c", "YFBg5NNEW4g", "IkZe4pXDv0k", "ZT0in30U-ug", "kqDqSLOuxmM", "ZgLsNSWN46o", ...] 13:23:52.265 [debug] QUERY OK source="media_items" db=0.9ms idle=407.3ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [24] 13:23:52.267 [debug] QUERY OK source="tasks" db=0.3ms idle=407.7ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [202973, 24, ~U[2026-01-03 02:23:52Z], ~U[2026-01-03 02:23:52Z]] 13:23:52.268 [info] {"args":{"id":24},"id":202948,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":413180,"event":"job:stop","queue_time":362376,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 13:23:54.965 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=bhkmFO8DikY --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/01/03/0103b736ea42d4b9807c3ef41ebcc94355552b1405d8dfbc05243471e5aaa9e1.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 1 with: ERROR: [youtube] bhkmFO8DikY: Sign in to confirm your age. This video may be inappropriate for some users. Use --cookies-from-browser or --cookies for the authentication. See https://github.com/yt-dlp/yt-dlp/wiki/FAQ#how-do-i-pass-cookies-to-yt-dlp for how to manually pass cookies. Also see https://github.com/yt-dlp/yt-dlp/wiki/Extractors#exporting-youtube-cookies for tips on effectively exporting YouTube cookies 13:23:54.965 [error] yt-dlp download error for media item #8380: "ERROR: [youtube] bhkmFO8DikY: Sign in to confirm your age. This video may be inappropriate for some users. Use --cookies-from-browser or --cookies for the authentication. See https://github.com/yt-dlp/yt-dlp/wiki/FAQ#how-do-i-pass-cookies-to-yt-dlp for how to manually pass cookies. Also see https://github.com/yt-dlp/yt-dlp/wiki/Extractors#exporting-youtube-cookies for tips on effectively exporting YouTube cookies\n" 13:23:54.965 [error] yt-dlp download will not be retried: "ERROR: [youtube] bhkmFO8DikY: Sign in to confirm your age. This video may be inappropriate for some users. Use --cookies-from-browser or --cookies for the authentication. See https://github.com/yt-dlp/yt-dlp/wiki/FAQ#how-do-i-pass-cookies-to-yt-dlp for how to manually pass cookies. Also see https://github.com/yt-dlp/yt-dlp/wiki/Extractors#exporting-youtube-cookies for tips on effectively exporting YouTube cookies\n" 13:23:54.966 [info] {"args":{"id":8380},"id":202969,"meta":{},"state":"success","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":10723195,"event":"job:stop","queue_time":237764,"attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 13:23:54.973 [info] {"args":{"id":8401},"id":202970,"meta":{},"system_time":1767407034973165547,"max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 13:23:54.974 [debug] QUERY OK source="media_items" db=0.6ms queue=0.1ms idle=1160.7ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [8401] 13:23:54.975 [info] User scripts lifecyle file either not present or is empty. Skipping. 13:23:54.976 [debug] QUERY OK source="sources" db=0.7ms queue=0.1ms idle=1119.7ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [7] 13:23:54.977 [debug] QUERY OK source="media_profiles" db=0.6ms queue=0.1ms idle=116.8ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:23:54.979 [debug] QUERY OK source="media_items" db=1.0ms queue=0.1ms idle=12.2ms SELECT 1 FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) LIMIT 1 [8401] 13:23:54.981 [debug] QUERY OK source="media_metadata" db=0.2ms idle=8.5ms SELECT m0."id", m0."metadata_filepath", m0."thumbnail_filepath", m0."media_item_id", m0."inserted_at", m0."updated_at", m0."media_item_id" FROM "media_metadata" AS m0 WHERE (m0."media_item_id" = ?) [8401] 13:23:54.982 [debug] QUERY OK source="media_profiles" db=0.4ms idle=7.5ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:23:54.983 [debug] QUERY OK source="settings" db=0.3ms idle=7.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:23:54.984 [debug] QUERY OK source="settings" db=0.3ms idle=6.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:23:54.985 [debug] Running yt-dlp command for action: get_downloadable_status 13:23:54.986 [debug] QUERY OK source="settings" db=0.2ms idle=6.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:23:54.987 [debug] QUERY OK source="settings" db=0.2ms idle=4.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:23:54.987 [debug] QUERY OK source="settings" db=0.2ms idle=4.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:23:54.988 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=ZWSj0M132e8 --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/b1/38/b138c2221053ab957b0a24ccac8fdc566408ec7aaea81db7ca593241279f67e9.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 13:23:55.174 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=aCES82xfgdw --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/6e/99/6e997ec877a55e64827fa61261f51eb781c0a94390ba85c4166d30ccc2941b6d.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 1 with: ERROR: [youtube] aCES82xfgdw: Sign in to confirm your age. This video may be inappropriate for some users. Use --cookies-from-browser or --cookies for the authentication. See https://github.com/yt-dlp/yt-dlp/wiki/FAQ#how-do-i-pass-cookies-to-yt-dlp for how to manually pass cookies. Also see https://github.com/yt-dlp/yt-dlp/wiki/Extractors#exporting-youtube-cookies for tips on effectively exporting YouTube cookies 13:23:55.174 [error] yt-dlp download error for media item #8350: "ERROR: [youtube] aCES82xfgdw: Sign in to confirm your age. This video may be inappropriate for some users. Use --cookies-from-browser or --cookies for the authentication. See https://github.com/yt-dlp/yt-dlp/wiki/FAQ#how-do-i-pass-cookies-to-yt-dlp for how to manually pass cookies. Also see https://github.com/yt-dlp/yt-dlp/wiki/Extractors#exporting-youtube-cookies for tips on effectively exporting YouTube cookies\n" 13:23:55.174 [error] yt-dlp download will not be retried: "ERROR: [youtube] aCES82xfgdw: Sign in to confirm your age. This video may be inappropriate for some users. Use --cookies-from-browser or --cookies for the authentication. See https://github.com/yt-dlp/yt-dlp/wiki/FAQ#how-do-i-pass-cookies-to-yt-dlp for how to manually pass cookies. Also see https://github.com/yt-dlp/yt-dlp/wiki/Extractors#exporting-youtube-cookies for tips on effectively exporting YouTube cookies\n" 13:23:55.175 [info] {"args":{"id":8350},"id":202968,"meta":{},"state":"success","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":10932184,"event":"job:stop","queue_time":237764,"attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 13:23:55.183 [info] {"args":{"id":8418},"id":202971,"meta":{},"system_time":1767407035183224525,"max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 13:23:55.184 [debug] QUERY OK source="media_items" db=0.6ms queue=0.1ms idle=196.9ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [8418] 13:23:55.184 [info] User scripts lifecyle file either not present or is empty. Skipping. 13:23:55.185 [debug] QUERY OK source="sources" db=0.6ms idle=197.8ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [7] 13:23:55.186 [debug] QUERY OK source="media_profiles" db=0.6ms idle=198.3ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:23:55.188 [debug] QUERY OK source="media_items" db=0.5ms queue=0.1ms idle=12.2ms SELECT 1 FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) LIMIT 1 [8418] 13:23:55.189 [debug] QUERY OK source="media_metadata" db=0.2ms idle=6.4ms SELECT m0."id", m0."metadata_filepath", m0."thumbnail_filepath", m0."media_item_id", m0."inserted_at", m0."updated_at", m0."media_item_id" FROM "media_metadata" AS m0 WHERE (m0."media_item_id" = ?) [8418] 13:23:55.190 [debug] QUERY OK source="media_profiles" db=0.2ms queue=0.1ms idle=5.7ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:23:55.191 [debug] QUERY OK source="settings" db=0.2ms queue=0.1ms idle=5.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:23:55.192 [debug] QUERY OK source="settings" db=0.3ms queue=0.1ms idle=5.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:23:55.193 [debug] Running yt-dlp command for action: get_downloadable_status 13:23:55.196 [debug] QUERY OK source="settings" db=0.7ms idle=7.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:23:55.197 [debug] QUERY OK source="settings" db=0.4ms queue=0.1ms idle=6.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:23:55.197 [debug] QUERY OK source="settings" db=0.4ms idle=6.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:23:55.197 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=v6jHhzj08yQ --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/d3/8a/d38af9317bc4e4c5833fecde6b5b892648bd897315b6cf3d8b4474a2805701b6.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 13:24:00.150 [info] {"source":"oban","duration":255,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 13:24:00.497 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=ZWSj0M132e8 --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/b1/38/b138c2221053ab957b0a24ccac8fdc566408ec7aaea81db7ca593241279f67e9.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 1 with: ERROR: [youtube] ZWSj0M132e8: Sign in to confirm your age. This video may be inappropriate for some users. Use --cookies-from-browser or --cookies for the authentication. See https://github.com/yt-dlp/yt-dlp/wiki/FAQ#how-do-i-pass-cookies-to-yt-dlp for how to manually pass cookies. Also see https://github.com/yt-dlp/yt-dlp/wiki/Extractors#exporting-youtube-cookies for tips on effectively exporting YouTube cookies 13:24:00.499 [debug] QUERY OK source="settings" db=0.3ms queue=0.1ms idle=1685.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:24:00.500 [debug] QUERY OK source="settings" db=0.2ms queue=0.1ms idle=1686.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:24:00.501 [debug] Running yt-dlp command for action: get_downloadable_status 13:24:00.502 [debug] QUERY OK source="settings" db=0.2ms idle=1631.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:24:00.503 [debug] QUERY OK source="settings" db=0.1ms queue=0.1ms idle=629.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:24:00.503 [debug] QUERY OK source="settings" db=0.1ms queue=0.1ms idle=353.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:24:00.504 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=ZWSj0M132e8 --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/80/f0/80f0553fa9f2c49c524eefb0f5d97b3c266e1a678e63a44fe44ad7e56d27d923.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 13:24:00.938 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=v6jHhzj08yQ --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/d3/8a/d38af9317bc4e4c5833fecde6b5b892648bd897315b6cf3d8b4474a2805701b6.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 1 with: ERROR: [youtube] v6jHhzj08yQ: Sign in to confirm your age. This video may be inappropriate for some users. Use --cookies-from-browser or --cookies for the authentication. See https://github.com/yt-dlp/yt-dlp/wiki/FAQ#how-do-i-pass-cookies-to-yt-dlp for how to manually pass cookies. Also see https://github.com/yt-dlp/yt-dlp/wiki/Extractors#exporting-youtube-cookies for tips on effectively exporting YouTube cookies 13:24:00.940 [debug] QUERY OK source="settings" db=0.3ms queue=0.2ms idle=439.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:24:00.940 [debug] QUERY OK source="settings" db=0.2ms queue=0.1ms idle=437.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:24:00.942 [debug] Running yt-dlp command for action: get_downloadable_status 13:24:00.943 [debug] QUERY OK source="settings" db=0.2ms idle=440.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:24:00.944 [debug] QUERY OK source="settings" db=0.2ms queue=0.1ms idle=440.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:24:00.944 [debug] QUERY OK source="settings" db=0.2ms queue=0.1ms idle=68.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:24:00.945 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=v6jHhzj08yQ --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/ba/a1/baa14fc36c65364b8fc0d5267235a420494c70e3cfe4415f687830effe1a3b06.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 13:24:03.612 [info] GET /media/545c46d7-ecd8-4ee3-b1fe-d93d7c412b11/stream 13:24:03.612 [info] GET /sources/21/media/58974 13:24:03.613 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.stream/2 Parameters: %{"uuid" => "545c46d7-ecd8-4ee3-b1fe-d93d7c412b11"} Pipelines: [:maybe_basic_auth] 13:24:03.613 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "58974", "prevent_download" => "true", "source_id" => "21"} Pipelines: [:browser] 13:24:03.614 [debug] QUERY OK source="media_items" db=0.8ms idle=800.7ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [58974] 13:24:03.615 [debug] QUERY OK source="media_items" db=1.3ms queue=0.1ms idle=800.8ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."uuid" = ?) ["545c46d7-ecd8-4ee3-b1fe-d93d7c412b11"] 13:24:03.615 [info] GET /sources/21/media/59074 13:24:03.616 [info] GET /media/25d3785f-7918-43d5-98e5-3ec22a87d7df/stream 13:24:03.616 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.stream/2 Parameters: %{"uuid" => "25d3785f-7918-43d5-98e5-3ec22a87d7df"} Pipelines: [:maybe_basic_auth] 13:24:03.615 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "59074", "prevent_download" => "true", "source_id" => "21"} Pipelines: [:browser] 13:24:03.616 [debug] QUERY OK source="sources" db=1.0ms idle=802.1ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [21] 13:24:03.616 [debug] QUERY OK source="tasks" db=1.1ms idle=802.1ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [58974] 13:24:03.617 [info] GET /media/2c6b8efd-a6e8-4156-a5ae-b8f3da33341a/stream 13:24:03.617 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.stream/2 Parameters: %{"uuid" => "2c6b8efd-a6e8-4156-a5ae-b8f3da33341a"} Pipelines: [:maybe_basic_auth] 13:24:03.618 [debug] QUERY OK source="oban_jobs" db=1.0ms idle=2.6ms SELECT o0."id", o0."state", o0."queue", o0."worker", o0."args", o0."meta", o0."tags", o0."errors", o0."attempt", o0."attempted_by", o0."max_attempts", o0."priority", o0."attempted_at", o0."cancelled_at", o0."completed_at", o0."discarded_at", o0."inserted_at", o0."scheduled_at", o0."id" FROM "oban_jobs" AS o0 WHERE (o0."id" = ?) [202131] 13:24:03.619 [debug] QUERY OK source="media_items" db=2.2ms queue=0.2ms idle=735.1ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."uuid" = ?) ["25d3785f-7918-43d5-98e5-3ec22a87d7df"] 13:24:03.620 [debug] QUERY OK source="media_items" db=1.6ms queue=0.1ms idle=2.2ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [59074] 13:24:03.620 [info] GET /sources/5df5222e-0d51-4b37-813e-9f6e3276b408/feed.xml 13:24:03.621 [debug] Processing with PinchflatWeb.Podcasts.PodcastController.rss_feed/2 Parameters: %{"uuid" => "5df5222e-0d51-4b37-813e-9f6e3276b408"} Pipelines: [:maybe_basic_auth] 13:24:03.621 [debug] QUERY OK source="media_items" db=3.3ms idle=2.4ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."uuid" = ?) ["2c6b8efd-a6e8-4156-a5ae-b8f3da33341a"] 13:24:03.621 [debug] QUERY OK source="settings" db=1.5ms queue=0.5ms idle=2.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:24:03.622 [debug] QUERY OK source="tasks" db=0.8ms queue=0.4ms idle=2.5ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [59074] 13:24:03.622 [debug] QUERY OK source="settings" db=0.3ms queue=0.1ms idle=1.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:24:03.623 [debug] QUERY OK source="sources" db=2.0ms queue=0.3ms idle=2.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [21] 13:24:03.624 [debug] QUERY OK source="settings" db=0.7ms idle=2.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:24:03.624 [debug] QUERY OK source="sources" db=1.1ms queue=1.4ms idle=1.4ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."uuid" = ?) ["5df5222e-0d51-4b37-813e-9f6e3276b408"] 13:24:03.625 [debug] QUERY OK source="oban_jobs" db=1.0ms idle=1.9ms SELECT o0."id", o0."state", o0."queue", o0."worker", o0."args", o0."meta", o0."tags", o0."errors", o0."attempt", o0."attempted_by", o0."max_attempts", o0."priority", o0."attempted_at", o0."cancelled_at", o0."completed_at", o0."discarded_at", o0."inserted_at", o0."scheduled_at", o0."id" FROM "oban_jobs" AS o0 WHERE (o0."id" = ?) [202146] 13:24:03.627 [debug] QUERY OK source="settings" db=0.5ms queue=0.1ms idle=2.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:24:03.627 [debug] QUERY OK source="media_profiles" db=1.1ms idle=2.1ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:24:03.628 [debug] QUERY OK source="settings" db=1.0ms queue=0.1ms idle=2.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:24:03.629 [debug] QUERY OK source="media_items" db=3.4ms queue=1.7ms idle=2.3ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND NOT (m0."media_filepath" IS NULL)) ORDER BY m0."uploaded_at" DESC LIMIT ? [3, 2000] 13:24:03.630 [debug] QUERY OK source="settings" db=0.7ms queue=0.6ms idle=3.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:24:03.632 [debug] QUERY OK source="media_profiles" db=0.2ms queue=0.1ms idle=5.5ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:24:03.652 [info] Sent 200 in 39ms 13:24:03.661 [debug] Invalid range request for media item: 545c46d7-ecd8-4ee3-b1fe-d93d7c412b11 - serving full file 13:24:03.662 [info] Sent 200 in 49ms 13:24:03.662 [debug] Invalid range request for media item: 25d3785f-7918-43d5-98e5-3ec22a87d7df - serving full file 13:24:03.662 [debug] Invalid range request for media item: 2c6b8efd-a6e8-4156-a5ae-b8f3da33341a - serving full file 13:24:03.662 [info] Sent 200 in 46ms 13:24:03.662 [info] Sent 200 in 45ms 13:24:03.664 [info] Sent 200 in 48ms 13:24:04.015 [debug] QUERY OK source="source_metadata" db=1.0ms queue=0.9ms idle=384.6ms SELECT s0."id", s0."metadata_filepath", s0."fanart_filepath", s0."poster_filepath", s0."banner_filepath", s0."source_id", s0."inserted_at", s0."updated_at", s0."source_id" FROM "source_metadata" AS s0 WHERE (s0."source_id" = ?) [3] 13:24:04.016 [debug] QUERY OK source="media_metadata" db=0.2ms queue=0.1ms idle=385.8ms SELECT m0."id", m0."metadata_filepath", m0."thumbnail_filepath", m0."media_item_id", m0."inserted_at", m0."updated_at", m0."media_item_id" FROM "media_metadata" AS m0 WHERE (m0."media_item_id" = ?) [58874] 13:24:04.017 [info] Sent 200 in 396ms 13:24:04.463 [info] GET /media/11cf7972-5c81-4f3e-99b9-70d9ff4e3473/stream 13:24:04.463 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.stream/2 Parameters: %{"uuid" => "11cf7972-5c81-4f3e-99b9-70d9ff4e3473"} Pipelines: [:maybe_basic_auth] 13:24:04.465 [debug] QUERY OK source="media_items" db=1.1ms idle=833.1ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."uuid" = ?) ["11cf7972-5c81-4f3e-99b9-70d9ff4e3473"] 13:24:04.465 [debug] Invalid range request for media item: 11cf7972-5c81-4f3e-99b9-70d9ff4e3473 - serving full file 13:24:04.465 [info] Sent 200 in 2ms 13:24:04.611 [info] GET /sources/8bb63a61-48d6-490d-8e35-770b8a63bb1d/feed.xml 13:24:04.611 [debug] Processing with PinchflatWeb.Podcasts.PodcastController.rss_feed/2 Parameters: %{"uuid" => "8bb63a61-48d6-490d-8e35-770b8a63bb1d"} Pipelines: [:maybe_basic_auth] 13:24:04.612 [debug] QUERY OK source="sources" db=0.6ms idle=979.2ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."uuid" = ?) ["8bb63a61-48d6-490d-8e35-770b8a63bb1d"] 13:24:04.616 [debug] QUERY OK source="media_items" db=3.4ms idle=727.5ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND NOT (m0."media_filepath" IS NULL)) ORDER BY m0."uploaded_at" DESC LIMIT ? [16, 2000] 13:24:04.729 [debug] QUERY OK source="source_metadata" db=0.2ms idle=714.1ms SELECT s0."id", s0."metadata_filepath", s0."fanart_filepath", s0."poster_filepath", s0."banner_filepath", s0."source_id", s0."inserted_at", s0."updated_at", s0."source_id" FROM "source_metadata" AS s0 WHERE (s0."source_id" = ?) [16] 13:24:04.730 [debug] QUERY OK source="media_metadata" db=0.2ms idle=713.8ms SELECT m0."id", m0."metadata_filepath", m0."thumbnail_filepath", m0."media_item_id", m0."inserted_at", m0."updated_at", m0."media_item_id" FROM "media_metadata" AS m0 WHERE (m0."media_item_id" = ?) [58866] 13:24:04.732 [info] Sent 200 in 121ms 13:24:05.075 [info] GET /sources/16/media/58871/force_download 13:24:05.076 [debug] QUERY OK source="settings" db=0.5ms idle=463.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:24:05.077 [debug] QUERY OK source="settings" db=0.4ms idle=460.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:24:05.077 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 13:24:05.077 [error] #PID<0.10215.0> running PinchflatWeb.Endpoint (connection #PID<0.10200.0>, stream id 3) terminated Server: pinchflat.uiau7e.uncld.dev:80 (http) Request: GET /sources/16/media/58871/force_download ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/16/media/58871/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.10200.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/16/media/58871/force_download", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 41856}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, zstd, deflate", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYc2Y2RnVma21qcHJVYWwtSWNmcDVfa0VX.xe2Vx4i51811lN50EJ632xMJkIUlj8eouW9QRM2Z6xQ", "host" => "pinchflat.uiau7e.uncld.dev", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)", "via" => "2.0 Caddy", "x-forwarded-for" => "216.73.216.126", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 3, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{ "_pinchflat_key" => "SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYc2Y2RnVma21qcHJVYWwtSWNmcDVfa0VX.xe2Vx4i51811lN50EJ632xMJkIUlj8eouW9QRM2Z6xQ" }, halted: false, host: "pinchflat.uiau7e.uncld.dev", method: "GET", owner: #PID<0.10215.0>, params: %{}, path_info: ["sources", "16", "media", "58871", "force_download"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.uiau7e.uncld.dev", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {10, 210, 0, 2}, req_cookies: %{ "_pinchflat_key" => "SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYc2Y2RnVma21qcHJVYWwtSWNmcDVfa0VX.xe2Vx4i51811lN50EJ632xMJkIUlj8eouW9QRM2Z6xQ" }, req_headers: [ {"accept", "*/*"}, {"accept-encoding", "gzip, br, zstd, deflate"}, {"cookie", "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYc2Y2RnVma21qcHJVYWwtSWNmcDVfa0VX.xe2Vx4i51811lN50EJ632xMJkIUlj8eouW9QRM2Z6xQ"}, {"host", "pinchflat.uiau7e.uncld.dev"}, {"user-agent", "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)"}, {"via", "2.0 Caddy"}, {"x-forwarded-for", "216.73.216.126"}, {"x-forwarded-host", "pinchflat.uiau7e.uncld.dev"}, {"x-forwarded-proto", "https"} ], request_path: "/sources/16/media/58871/force_download", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GIcXV-c_Ik0u2FkAAdjh"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.10200.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/16/media/58871/force_download", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 41856}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, zstd, deflate", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYc2Y2RnVma21qcHJVYWwtSWNmcDVfa0VX.xe2Vx4i51811lN50EJ632xMJkIUlj8eouW9QRM2Z6xQ", "host" => "pinchflat.uiau7e.uncld.dev", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)", "via" => "2.0 Caddy", "x-forwarded-for" => "216.73.216.126", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 3, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/16/media/58871/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.10200.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/16/media/58871/force_download", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 41856}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, zstd, deflate", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYc2Y2RnVma21qcHJVYWwtSWNmcDVfa0VX.xe2Vx4i51811lN50EJ632xMJkIUlj8eouW9QRM2Z6xQ", "host" => "pinchflat.uiau7e.uncld.dev", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)", "via" => "2.0 Caddy", "x-forwarded-for" => "216.73.216.126", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 3, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{ "_pinchflat_key" => "SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYc2Y2RnVma21qcHJVYWwtSWNmcDVfa0VX.xe2Vx4i51811lN50EJ632xMJkIUlj8eouW9QRM2Z6xQ" }, halted: false, host: "pinchflat.uiau7e.uncld.dev", method: "GET", owner: #PID<0.10215.0>, params: %{}, path_info: ["sou (truncated) 13:24:05.681 [info] GET /sources/16/media/58866/force_download 13:24:05.683 [debug] QUERY OK source="settings" db=1.4ms idle=952.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:24:05.684 [debug] QUERY OK source="settings" db=0.2ms idle=953.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:24:05.684 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 13:24:05.685 [error] #PID<0.10216.0> running PinchflatWeb.Endpoint (connection #PID<0.10200.0>, stream id 4) terminated Server: pinchflat.uiau7e.uncld.dev:80 (http) Request: GET /sources/16/media/58866/force_download ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/16/media/58866/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.10200.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/16/media/58866/force_download", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 41856}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, zstd, deflate", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYc2Y2RnVma21qcHJVYWwtSWNmcDVfa0VX.xe2Vx4i51811lN50EJ632xMJkIUlj8eouW9QRM2Z6xQ", "host" => "pinchflat.uiau7e.uncld.dev", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)", "via" => "2.0 Caddy", "x-forwarded-for" => "216.73.216.126", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 4, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{ "_pinchflat_key" => "SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYc2Y2RnVma21qcHJVYWwtSWNmcDVfa0VX.xe2Vx4i51811lN50EJ632xMJkIUlj8eouW9QRM2Z6xQ" }, halted: false, host: "pinchflat.uiau7e.uncld.dev", method: "GET", owner: #PID<0.10216.0>, params: %{}, path_info: ["sources", "16", "media", "58866", "force_download"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.uiau7e.uncld.dev", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {10, 210, 0, 2}, req_cookies: %{ "_pinchflat_key" => "SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYc2Y2RnVma21qcHJVYWwtSWNmcDVfa0VX.xe2Vx4i51811lN50EJ632xMJkIUlj8eouW9QRM2Z6xQ" }, req_headers: [ {"accept", "*/*"}, {"accept-encoding", "gzip, br, zstd, deflate"}, {"cookie", "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYc2Y2RnVma21qcHJVYWwtSWNmcDVfa0VX.xe2Vx4i51811lN50EJ632xMJkIUlj8eouW9QRM2Z6xQ"}, {"host", "pinchflat.uiau7e.uncld.dev"}, {"user-agent", "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)"}, {"via", "2.0 Caddy"}, {"x-forwarded-for", "216.73.216.126"}, {"x-forwarded-host", "pinchflat.uiau7e.uncld.dev"}, {"x-forwarded-proto", "https"} ], request_path: "/sources/16/media/58866/force_download", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GIcXWAtZXkBkVoQAAdkB"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.10200.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/16/media/58866/force_download", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 41856}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, zstd, deflate", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYc2Y2RnVma21qcHJVYWwtSWNmcDVfa0VX.xe2Vx4i51811lN50EJ632xMJkIUlj8eouW9QRM2Z6xQ", "host" => "pinchflat.uiau7e.uncld.dev", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)", "via" => "2.0 Caddy", "x-forwarded-for" => "216.73.216.126", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 4, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/16/media/58866/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.10200.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/16/media/58866/force_download", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 41856}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, zstd, deflate", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYc2Y2RnVma21qcHJVYWwtSWNmcDVfa0VX.xe2Vx4i51811lN50EJ632xMJkIUlj8eouW9QRM2Z6xQ", "host" => "pinchflat.uiau7e.uncld.dev", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)", "via" => "2.0 Caddy", "x-forwarded-for" => "216.73.216.126", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 4, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{ "_pinchflat_key" => "SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYc2Y2RnVma21qcHJVYWwtSWNmcDVfa0VX.xe2Vx4i51811lN50EJ632xMJkIUlj8eouW9QRM2Z6xQ" }, halted: false, host: "pinchflat.uiau7e.uncld.dev", method: "GET", owner: #PID<0.10216.0>, params: %{}, path_info: ["sou (truncated) 13:24:06.295 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=ZWSj0M132e8 --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/80/f0/80f0553fa9f2c49c524eefb0f5d97b3c266e1a678e63a44fe44ad7e56d27d923.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 1 with: ERROR: [youtube] ZWSj0M132e8: Sign in to confirm your age. This video may be inappropriate for some users. Use --cookies-from-browser or --cookies for the authentication. See https://github.com/yt-dlp/yt-dlp/wiki/FAQ#how-do-i-pass-cookies-to-yt-dlp for how to manually pass cookies. Also see https://github.com/yt-dlp/yt-dlp/wiki/Extractors#exporting-youtube-cookies for tips on effectively exporting YouTube cookies 13:24:06.295 [error] yt-dlp download error for media item #8401: "ERROR: [youtube] ZWSj0M132e8: Sign in to confirm your age. This video may be inappropriate for some users. Use --cookies-from-browser or --cookies for the authentication. See https://github.com/yt-dlp/yt-dlp/wiki/FAQ#how-do-i-pass-cookies-to-yt-dlp for how to manually pass cookies. Also see https://github.com/yt-dlp/yt-dlp/wiki/Extractors#exporting-youtube-cookies for tips on effectively exporting YouTube cookies\n" 13:24:06.295 [error] yt-dlp download will not be retried: "ERROR: [youtube] ZWSj0M132e8: Sign in to confirm your age. This video may be inappropriate for some users. Use --cookies-from-browser or --cookies for the authentication. See https://github.com/yt-dlp/yt-dlp/wiki/FAQ#how-do-i-pass-cookies-to-yt-dlp for how to manually pass cookies. Also see https://github.com/yt-dlp/yt-dlp/wiki/Extractors#exporting-youtube-cookies for tips on effectively exporting YouTube cookies\n" 13:24:06.296 [info] {"args":{"id":8401},"id":202970,"meta":{},"state":"success","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":11322405,"event":"job:stop","queue_time":10971788,"attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 13:24:06.425 [info] GET /sources/18/media/59084/force_download 13:24:06.429 [debug] QUERY OK source="settings" db=2.2ms queue=0.2ms idle=742.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:24:06.430 [debug] QUERY OK source="settings" db=0.7ms queue=0.2ms idle=745.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:24:06.431 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 13:24:06.432 [error] #PID<0.10217.0> running PinchflatWeb.Endpoint (connection #PID<0.10200.0>, stream id 5) terminated Server: pinchflat.uiau7e.uncld.dev:80 (http) Request: GET /sources/18/media/59084/force_download ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/18/media/59084/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.10200.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/18/media/59084/force_download", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 41856}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, zstd, deflate", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYc2Y2RnVma21qcHJVYWwtSWNmcDVfa0VX.xe2Vx4i51811lN50EJ632xMJkIUlj8eouW9QRM2Z6xQ", "host" => "pinchflat.uiau7e.uncld.dev", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)", "via" => "2.0 Caddy", "x-forwarded-for" => "216.73.216.126", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 5, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{ "_pinchflat_key" => "SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYc2Y2RnVma21qcHJVYWwtSWNmcDVfa0VX.xe2Vx4i51811lN50EJ632xMJkIUlj8eouW9QRM2Z6xQ" }, halted: false, host: "pinchflat.uiau7e.uncld.dev", method: "GET", owner: #PID<0.10217.0>, params: %{}, path_info: ["sources", "18", "media", "59084", "force_download"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.uiau7e.uncld.dev", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {10, 210, 0, 2}, req_cookies: %{ "_pinchflat_key" => "SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYc2Y2RnVma21qcHJVYWwtSWNmcDVfa0VX.xe2Vx4i51811lN50EJ632xMJkIUlj8eouW9QRM2Z6xQ" }, req_headers: [ {"accept", "*/*"}, {"accept-encoding", "gzip, br, zstd, deflate"}, {"cookie", "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYc2Y2RnVma21qcHJVYWwtSWNmcDVfa0VX.xe2Vx4i51811lN50EJ632xMJkIUlj8eouW9QRM2Z6xQ"}, {"host", "pinchflat.uiau7e.uncld.dev"}, {"user-agent", "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)"}, {"via", "2.0 Caddy"}, {"x-forwarded-for", "216.73.216.126"}, {"x-forwarded-host", "pinchflat.uiau7e.uncld.dev"}, {"x-forwarded-proto", "https"} ], request_path: "/sources/18/media/59084/force_download", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GIcXWDexCQCUthgAAdkh"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.10200.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/18/media/59084/force_download", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 41856}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, zstd, deflate", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYc2Y2RnVma21qcHJVYWwtSWNmcDVfa0VX.xe2Vx4i51811lN50EJ632xMJkIUlj8eouW9QRM2Z6xQ", "host" => "pinchflat.uiau7e.uncld.dev", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)", "via" => "2.0 Caddy", "x-forwarded-for" => "216.73.216.126", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 5, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/18/media/59084/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.10200.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/18/media/59084/force_download", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 41856}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, zstd, deflate", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYc2Y2RnVma21qcHJVYWwtSWNmcDVfa0VX.xe2Vx4i51811lN50EJ632xMJkIUlj8eouW9QRM2Z6xQ", "host" => "pinchflat.uiau7e.uncld.dev", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)", "via" => "2.0 Caddy", "x-forwarded-for" => "216.73.216.126", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 5, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{ "_pinchflat_key" => "SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYc2Y2RnVma21qcHJVYWwtSWNmcDVfa0VX.xe2Vx4i51811lN50EJ632xMJkIUlj8eouW9QRM2Z6xQ" }, halted: false, host: "pinchflat.uiau7e.uncld.dev", method: "GET", owner: #PID<0.10217.0>, params: %{}, path_info: ["sou (truncated) 13:24:06.541 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=v6jHhzj08yQ --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/ba/a1/baa14fc36c65364b8fc0d5267235a420494c70e3cfe4415f687830effe1a3b06.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 1 with: ERROR: [youtube] v6jHhzj08yQ: Sign in to confirm your age. This video may be inappropriate for some users. Use --cookies-from-browser or --cookies for the authentication. See https://github.com/yt-dlp/yt-dlp/wiki/FAQ#how-do-i-pass-cookies-to-yt-dlp for how to manually pass cookies. Also see https://github.com/yt-dlp/yt-dlp/wiki/Extractors#exporting-youtube-cookies for tips on effectively exporting YouTube cookies 13:24:06.541 [error] yt-dlp download error for media item #8418: "ERROR: [youtube] v6jHhzj08yQ: Sign in to confirm your age. This video may be inappropriate for some users. Use --cookies-from-browser or --cookies for the authentication. See https://github.com/yt-dlp/yt-dlp/wiki/FAQ#how-do-i-pass-cookies-to-yt-dlp for how to manually pass cookies. Also see https://github.com/yt-dlp/yt-dlp/wiki/Extractors#exporting-youtube-cookies for tips on effectively exporting YouTube cookies\n" 13:24:06.541 [error] yt-dlp download will not be retried: "ERROR: [youtube] v6jHhzj08yQ: Sign in to confirm your age. This video may be inappropriate for some users. Use --cookies-from-browser or --cookies for the authentication. See https://github.com/yt-dlp/yt-dlp/wiki/FAQ#how-do-i-pass-cookies-to-yt-dlp for how to manually pass cookies. Also see https://github.com/yt-dlp/yt-dlp/wiki/Extractors#exporting-youtube-cookies for tips on effectively exporting YouTube cookies\n" 13:24:06.542 [info] {"args":{"id":8418},"id":202971,"meta":{},"state":"success","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":11358218,"event":"job:stop","queue_time":11180740,"attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 13:24:11.737 [info] GET /sources/11/media/58580 13:24:11.738 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "58580", "source_id" => "11"} Pipelines: [:browser] 13:24:11.739 [debug] QUERY OK source="media_items" db=0.8ms idle=1925.4ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [58580] 13:24:11.740 [debug] QUERY OK source="tasks" db=0.3ms queue=0.1ms idle=1926.8ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [58580] 13:24:11.741 [debug] QUERY OK source="sources" db=0.7ms idle=1927.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [11] 13:24:11.742 [debug] QUERY OK source="settings" db=0.2ms idle=1796.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:24:11.742 [debug] QUERY OK source="settings" db=0.3ms queue=0.1ms idle=795.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:24:11.744 [debug] QUERY OK source="settings" db=0.3ms queue=0.1ms idle=4.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:24:11.746 [debug] QUERY OK source="media_profiles" db=0.2ms idle=5.2ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:24:11.749 [info] Sent 200 in 11ms 13:24:12.648 [info] {"source":"oban","duration":2557,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:24:33.012 [info] {"args":{"id":22},"id":202949,"meta":{},"system_time":1767407073011849205,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 13:24:33.018 [debug] QUERY OK source="sources" db=5.7ms idle=131.1ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [22] 13:24:33.018 [debug] QUERY OK source="settings" db=0.5ms idle=137.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:24:33.019 [debug] QUERY OK source="media_profiles" db=0.5ms idle=137.8ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:24:33.020 [debug] QUERY OK source="settings" db=0.3ms idle=15.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:24:33.020 [debug] Fetching recent media IDs from YouTube API for playlist: UUP1RHyOhO98Yn2rMbDBirxA 13:24:33.020 [debug] QUERY OK source="settings" db=0.3ms idle=8.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:24:33.021 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 13:24:33.359 [debug] QUERY OK source="media_items" db=1.8ms idle=339.5ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND m0."media_id" IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [22, "N5RzDzO54gQ", "5glegyagphQ", "VtiV_RfFqNM", "qNYyH7bMcbI", "MPdiQsg_zQ8", "4-VOc2Aich8", "gMrBK9rp6As", "p0lqYk8_uMI", "aKpQHxUiwxc", "KsuhL0zVo3I", "pCJcoGDsbxc", "_5AR-GKeqlk", "VcJG7rIOjb0", "vRzAE_0VnXQ", "uj_bcWLWMtw", "xRyiudwo_jM", "pTMRT4CRUoM", "W8_LEBSOsPg", "YZuP7d99kCw"] 13:24:33.360 [debug] QUERY OK source="settings" db=0.4ms idle=341.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:24:33.361 [debug] QUERY OK source="settings" db=0.3ms idle=341.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:24:33.361 [debug] Running yt-dlp command for action: get_media_attributes 13:24:33.363 [debug] QUERY OK source="settings" db=0.3ms idle=342.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:24:33.363 [debug] QUERY OK source="settings" db=0.4ms idle=342.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:24:33.364 [debug] QUERY OK source="settings" db=0.4ms idle=4.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:24:33.364 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=gMrBK9rp6As --simulate --skip-download --output /downloads/White Raven/Season %(upload_date>%Y)S/s%(upload_date>%Y)Se%(upload_date>%m%d)S00 - %(title)S.%(ext)S --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --print-to-file %(.{id,title,live_status,original_url,description,aspect_ratio,duration,upload_date,timestamp,playlist_index,filename})j /tmp/pinchflat/data/0b/54/0b54c884f4fbd56b596e4c15dd7f0f9129de67dabdce0fa392deab1db1ed8ae8.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 13:24:34.116 [info] {"args":{"id":3},"id":202950,"meta":{},"system_time":1767407074116066772,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 13:24:34.116 [debug] QUERY OK source="sources" db=0.4ms idle=753.2ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [3] 13:24:34.117 [debug] QUERY OK source="settings" db=0.2ms idle=753.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:24:34.118 [debug] QUERY OK source="media_profiles" db=0.8ms queue=0.1ms idle=753.5ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:24:34.120 [debug] QUERY OK source="settings" db=0.6ms queue=0.1ms idle=10.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:24:34.120 [debug] Fetching recent media IDs from YouTube API for playlist: UUISrVZmDM4x-Rq9mmNUw7Zw 13:24:34.121 [debug] QUERY OK source="settings" db=0.5ms queue=0.2ms idle=4.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:24:34.121 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 13:24:34.563 [debug] QUERY OK source="media_items" db=3.1ms idle=442.7ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND m0."media_id" IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [3, "CtF5dLHITYA", "SGJkxRdkRGg", "OUCt85aJaAA", "9gARPYZOka4", "-uH-Gi5tjEw", "qwUBBQKYX94", "s8VLDSQJ8nA", "EvPfr0lKkh4", "msXzAxF49gA", "hQCWaSvjkU0", "RcmjVsy3a-g", "xtuNc9vYJG4", "fj2tcg8OzsM", "2FZ4IfPACDM", "2Q9DzW20YJ8", "IVsWFGOE_mw", "vPxpMcv2Z4Y", "Zverj_ldlhY", "pQK8xasPd9Q", "_Yo7nh8u9pk", "4HzltsOvc0A", "a8UBLMm71JY", "3vqbr7-6Twk", "Df0iVjAKJZw", "n-X-AJpHUyI", "4CV7jI0e0Hw", "nqPoocCKci8", "5IIOdWnJGxg", "jkPL8BaM4ko", "CzeQtnRmUZ0", "9u-0d2IVZ3I", "igtvNmqsKM0", "47XDpW4nOzk", "8xvd7xSLQOo", "PnQPZMN0kIY", "feDph2WgRfI", "Z5FZ2XfX4Uc", "e0DxPopyrqM", "YvaK-Tjp2ck", "6_CctUPWX4I", "_DzHKw8yK58", "VnAkeiehyCg", "EFW1iCguDV8", "CEj7B1VzUwU", "3cy5fWUssjQ", "ZnjoTYmqLhs", "5IxtizzvaWw", "ZnBsMRl-EL0", "ET-M3T8E0PU", ...] 13:24:34.570 [debug] QUERY OK source="media_items" db=3.3ms idle=449.2ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [3] 13:24:34.575 [debug] QUERY OK source="tasks" db=0.8ms idle=453.1ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [202974, 3, ~U[2026-01-03 02:24:34Z], ~U[2026-01-03 02:24:34Z]] 13:24:34.576 [info] {"args":{"id":3},"id":202950,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":459512,"event":"job:stop","queue_time":417680,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 13:24:35.312 [info] GET /sources/18/media/59036/edit 13:24:35.312 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "59036", "source_id" => "18"} Pipelines: [:browser] 13:24:35.314 [debug] QUERY OK source="media_items" db=1.1ms idle=738.3ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [59036] 13:24:35.314 [info] GET /sources/16/media/53981/edit 13:24:35.314 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "53981", "source_id" => "16"} Pipelines: [:browser] 13:24:35.315 [debug] QUERY OK source="settings" db=0.6ms idle=738.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:24:35.316 [debug] QUERY OK source="media_items" db=0.6ms idle=738.6ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [53981] 13:24:35.316 [debug] QUERY OK source="settings" db=0.8ms idle=729.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:24:35.316 [debug] QUERY OK source="settings" db=0.1ms idle=204.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:24:35.317 [debug] QUERY OK source="settings" db=0.9ms idle=2.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:24:35.318 [debug] QUERY OK source="settings" db=1.0ms queue=0.2ms idle=1.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:24:35.318 [info] GET /sources/16/media/53981 13:24:35.319 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "53981", "source_id" => "16"} Pipelines: [:browser] 13:24:35.319 [info] Sent 200 in 7ms 13:24:35.320 [debug] QUERY OK source="settings" db=0.6ms idle=3.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:24:35.320 [debug] QUERY OK source="media_items" db=0.4ms idle=3.3ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [53981] 13:24:35.320 [info] GET /sources/16/media/10082/edit 13:24:35.320 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "10082", "source_id" => "16"} Pipelines: [:browser] 13:24:35.321 [debug] QUERY OK source="tasks" db=0.9ms queue=0.1ms idle=3.8ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [53981] 13:24:35.321 [info] GET /sources/18/media/50796 13:24:35.321 [debug] QUERY OK source="sources" db=1.1ms idle=2.8ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [16] 13:24:35.322 [info] GET /sources/21/media/59074/force_download 13:24:35.322 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "50796", "source_id" => "18"} Pipelines: [:browser] 13:24:35.322 [debug] QUERY OK source="media_items" db=0.8ms queue=0.2ms idle=3.1ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [10082] 13:24:35.323 [info] Sent 200 in 8ms 13:24:35.323 [debug] QUERY OK source="settings" db=0.6ms idle=0.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:24:35.323 [debug] QUERY OK source="settings" db=0.8ms idle=1.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:24:35.323 [debug] QUERY OK source="settings" db=0.8ms idle=2.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:24:35.323 [debug] QUERY OK source="media_items" db=1.1ms idle=2.3ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [50796] 13:24:35.325 [debug] QUERY OK source="settings" db=1.1ms idle=0.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:24:35.325 [debug] QUERY OK source="settings" db=1.2ms idle=1.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:24:35.325 [debug] QUERY OK source="tasks" db=0.9ms idle=0.4ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [50796] 13:24:35.325 [debug] QUERY OK source="settings" db=1.5ms idle=0.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:24:35.325 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 13:24:35.325 [debug] QUERY OK source="sources" db=1.4ms idle=0.4ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [18] 13:24:35.325 [debug] QUERY OK source="settings" db=0.4ms idle=0.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:24:35.326 [debug] QUERY OK source="settings" db=0.4ms idle=0.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:24:35.326 [debug] QUERY OK source="settings" db=0.3ms queue=0.1ms idle=1.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:24:35.327 [debug] QUERY OK source="settings" db=0.6ms idle=1.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:24:35.328 [debug] QUERY OK source="media_profiles" db=0.6ms queue=0.3ms idle=1.3ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:24:35.326 [error] #PID<0.10242.0> running PinchflatWeb.Endpoint (connection #PID<0.10234.0>, stream id 1) terminated Server: pinchflat.uiau7e.uncld.dev:80 (http) Request: GET /sources/21/media/59074/force_download ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/21/media/59074/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.10234.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/21/media/59074/force_download", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 57450}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, zstd, deflate", "host" => "pinchflat.uiau7e.uncld.dev", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)", "via" => "2.0 Caddy", "x-forwarded-for" => "216.73.216.126", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.uiau7e.uncld.dev", method: "GET", owner: #PID<0.10242.0>, params: %{}, path_info: ["sources", "21", "media", "59074", "force_download"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.uiau7e.uncld.dev", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {10, 210, 0, 2}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"accept-encoding", "gzip, br, zstd, deflate"}, {"host", "pinchflat.uiau7e.uncld.dev"}, {"user-agent", "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)"}, {"via", "2.0 Caddy"}, {"x-forwarded-for", "216.73.216.126"}, {"x-forwarded-host", "pinchflat.uiau7e.uncld.dev"}, {"x-forwarded-proto", "https"} ], request_path: "/sources/21/media/59074/force_download", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GIcXXvIUWU6qCvgAAA7k"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.10234.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/21/media/59074/force_download", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 57450}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, zstd, deflate", "host" => "pinchflat.uiau7e.uncld.dev", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)", "via" => "2.0 Caddy", "x-forwarded-for" => "216.73.216.126", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/21/media/59074/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.10234.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/21/media/59074/force_download", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 57450}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, zstd, deflate", "host" => "pinchflat.uiau7e.uncld.dev", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)", "via" => "2.0 Caddy", "x-forwarded-for" => "216.73.216.126", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.uiau7e.uncld.dev", method: "GET", owner: #PID<0.10242.0>, params: %{}, path_info: ["sources", "21", "media", "59074", "force_download"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.uiau7e.uncld.dev", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {10, 210, 0, 2}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"accept-encoding", "gzip, br, zstd, deflate"}, {"host", "pinchflat.uiau7e.uncld.dev"}, {"user-agent", "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)"}, {"via", "2.0 Caddy"}, {"x-forwarded-for", "216.73.216.126"}, (truncated) 13:24:35.328 [info] Sent 200 in 7ms 13:24:35.328 [debug] QUERY OK source="settings" db=0.4ms idle=2.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:24:35.329 [debug] QUERY OK source="media_profiles" db=0.5ms idle=2.6ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:24:35.344 [info] Sent 200 in 26ms 13:24:35.361 [info] Sent 200 in 39ms 13:24:35.809 [info] GET /sources/18/media/59041/edit 13:24:35.809 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "59041", "source_id" => "18"} Pipelines: [:browser] 13:24:35.811 [debug] QUERY OK source="media_items" db=0.9ms idle=483.6ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [59041] 13:24:35.812 [debug] QUERY OK source="settings" db=0.6ms idle=484.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:24:35.813 [debug] QUERY OK source="settings" db=0.7ms queue=0.1ms idle=484.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:24:35.815 [debug] QUERY OK source="settings" db=0.5ms idle=485.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:24:35.816 [info] Sent 200 in 7ms 13:24:36.108 [info] GET /sources/18/media/59036 13:24:36.108 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "59036", "source_id" => "18"} Pipelines: [:browser] 13:24:36.109 [debug] QUERY OK source="media_items" db=0.3ms queue=0.1ms idle=779.4ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [59036] 13:24:36.110 [debug] QUERY OK source="tasks" db=0.2ms idle=299.0ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [59036] 13:24:36.110 [debug] QUERY OK source="sources" db=0.5ms idle=297.8ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [18] 13:24:36.111 [debug] QUERY OK source="settings" db=0.2ms idle=297.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:24:36.112 [debug] QUERY OK source="settings" db=0.4ms idle=296.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:24:36.113 [debug] QUERY OK source="settings" db=0.6ms idle=2.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:24:36.114 [debug] QUERY OK source="media_profiles" db=0.2ms idle=2.9ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:24:36.116 [info] Sent 200 in 8ms 13:24:36.258 [info] GET /sources/18/media/59071/edit 13:24:36.258 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "59071", "source_id" => "18"} Pipelines: [:browser] 13:24:36.259 [debug] QUERY OK source="media_items" db=0.6ms queue=0.1ms idle=147.6ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [59071] 13:24:36.260 [debug] QUERY OK source="settings" db=0.1ms idle=148.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:24:36.260 [debug] QUERY OK source="settings" db=0.1ms idle=147.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:24:36.261 [debug] QUERY OK source="settings" db=0.1ms idle=147.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:24:36.262 [info] Sent 200 in 3ms 13:24:36.412 [info] GET /sources/16/media/10103/edit 13:24:36.412 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "10103", "source_id" => "16"} Pipelines: [:browser] 13:24:36.413 [debug] QUERY OK source="media_items" db=0.5ms queue=0.1ms idle=299.1ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [10103] 13:24:36.414 [debug] QUERY OK source="settings" db=0.2ms idle=154.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:24:36.414 [debug] QUERY OK source="settings" db=0.2ms idle=154.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:24:36.415 [debug] QUERY OK source="settings" db=0.5ms idle=154.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:24:36.417 [info] Sent 200 in 5ms 13:24:36.579 [info] GET /sources/18/media/59108/edit 13:24:36.579 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "59108", "source_id" => "18"} Pipelines: [:browser] 13:24:36.581 [debug] QUERY OK source="media_items" db=1.0ms idle=318.6ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [59108] 13:24:36.582 [debug] QUERY OK source="settings" db=0.9ms idle=167.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:24:36.583 [debug] QUERY OK source="settings" db=0.2ms idle=168.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:24:36.584 [debug] QUERY OK source="settings" db=0.4ms idle=168.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:24:36.585 [info] Sent 200 in 5ms 13:24:37.760 [info] GET /sources/11/media/58610 13:24:37.761 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "58610", "source_id" => "11"} Pipelines: [:browser] 13:24:37.762 [debug] QUERY OK source="media_items" db=0.4ms queue=0.3ms idle=1180.9ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [58610] 13:24:37.764 [debug] QUERY OK source="sources" db=0.4ms idle=1180.7ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [11] 13:24:37.764 [debug] QUERY OK source="tasks" db=0.4ms queue=0.1ms idle=1181.0ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [58610] 13:24:37.765 [debug] QUERY OK source="settings" db=0.4ms idle=1181.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:24:37.766 [debug] QUERY OK source="settings" db=0.3ms idle=649.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:24:37.767 [debug] QUERY OK source="settings" db=0.3ms idle=4.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:24:37.769 [debug] QUERY OK source="media_profiles" db=0.7ms idle=4.2ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:24:37.771 [info] Sent 200 in 10ms 13:24:37.886 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=gMrBK9rp6As --simulate --skip-download --output /downloads/White Raven/Season %(upload_date>%Y)S/s%(upload_date>%Y)Se%(upload_date>%m%d)S00 - %(title)S.%(ext)S --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --print-to-file %(.{id,title,live_status,original_url,description,aspect_ratio,duration,upload_date,timestamp,playlist_index,filename})j /tmp/pinchflat/data/0b/54/0b54c884f4fbd56b596e4c15dd7f0f9129de67dabdce0fa392deab1db1ed8ae8.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 1 with: ERROR: [youtube] gMrBK9rp6As: Offline. 13:24:37.886 [error] Error creating media item 'gMrBK9rp6As' from URL: {:error, "ERROR: [youtube] gMrBK9rp6As: Offline.\n", 1} 13:24:37.887 [debug] QUERY OK source="media_items" db=0.6ms idle=122.4ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [22] 13:24:37.891 [debug] QUERY OK source="tasks" db=0.7ms idle=123.2ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [202975, 22, ~U[2026-01-03 02:24:37Z], ~U[2026-01-03 02:24:37Z]] 13:24:37.892 [info] {"args":{"id":22},"id":202949,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":4879858,"event":"job:stop","queue_time":967178,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 13:24:42.650 [info] {"source":"oban","duration":1681,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:24:48.264 [info] {"args":{"id":1},"id":202951,"meta":{},"system_time":1767407088264076021,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 13:24:48.265 [debug] QUERY OK source="sources" db=1.1ms idle=1023.4ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 13:24:48.266 [debug] QUERY OK source="settings" db=0.6ms idle=1014.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:24:48.267 [debug] QUERY OK source="media_profiles" db=0.6ms idle=25.8ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:24:48.268 [debug] QUERY OK source="settings" db=0.5ms idle=11.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:24:48.268 [debug] Fetching recent media IDs from YouTube API for playlist: UU54SLBnD5k5U3Q6N__UjbAw 13:24:48.269 [debug] QUERY OK source="settings" db=0.5ms idle=4.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:24:48.269 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 13:24:48.750 [debug] QUERY OK source="media_items" db=94.5ms idle=389.7ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND m0."media_id" IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [1, "UYCKIroDVBY", "ynOiaE9f6NY", "At_WjGosTNM", "_s7ZzdPoVZE", "ulhKFEKXIEI", "YpQ2jupcrHk", "PetMnG6cCDw", "VdxlXCnA1DM", "uj2s7HZQigU", "rZ7Y_gPAHig", "LTmK8Ab6IFE", "sZKNVGI8xt0", "_PUZIf6VQto", "J2-1ZErtS7A", "OEyptSEM5Tw", "HLeY2_hJvRk", "DkZ5uXcDxjc", "zPWe_aBuNfM", "PZN18led4ok", "66F09ebI9gw", "Pfok4B_xyaI", "e5HEGCCadBU", "hYFsHfPquPg", "nKsnfEB29ek", "OpDh_O473Ms", "ZTtZ12XtQpg", "TphXloX3PEI", "4Qhp4VPP2Wo", "J5l7jvbp3u8", "uL_YQMkkbUg", "SAZ17l0EwxI", "fTa_T2pVwuk", "6HpTVfX0SvI", "XlIWsRyXL8U", "nM1GQNJU6LQ", "WVN1LNy1zgo", "0Fxf6_q7qHc", "dL0KPsy-Dww", "G43wJ7YyWzM", "yVy89TnL9Zg", "BR1VRJDu-gc", "-2HeoqiMC6s", "7WXyx51z5G8", "jCk-9S8PQyc", "vGEIHv1XelY", "rOI7HYGGHpo", "gNeGHhU6UaI", "gUlkwSHOT7Q", "tpf7TxliCxA", ...] 13:24:48.758 [debug] QUERY OK source="media_items" db=5.4ms idle=485.8ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [1] 13:24:48.762 [debug] QUERY OK source="tasks" db=0.7ms idle=492.4ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [202976, 1, ~U[2026-01-03 02:24:48Z], ~U[2026-01-03 02:24:48Z]] 13:24:48.763 [info] {"args":{"id":1},"id":202951,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":498293,"event":"job:stop","queue_time":583516,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 13:24:59.321 [info] GET /sources/6/media/58860 13:24:59.322 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "58860", "prevent_download" => "true", "source_id" => "6"} Pipelines: [:browser] 13:24:59.322 [info] GET /media/651f8c56-1f1e-4059-9837-6c96abcc815e/stream 13:24:59.322 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.stream/2 Parameters: %{"uuid" => "651f8c56-1f1e-4059-9837-6c96abcc815e"} Pipelines: [:maybe_basic_auth] 13:24:59.323 [debug] QUERY OK source="media_items" db=0.4ms queue=0.1ms idle=1067.2ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [58860] 13:24:59.323 [debug] QUERY OK source="media_items" db=0.7ms idle=1067.7ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."uuid" = ?) ["651f8c56-1f1e-4059-9837-6c96abcc815e"] 13:24:59.324 [info] GET /sources/16/media/58877 13:24:59.325 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "58877", "prevent_download" => "true", "source_id" => "16"} Pipelines: [:browser] 13:24:59.325 [info] GET /sources/18/media/59084 13:24:59.326 [info] GET /sources/16/media/58866 13:24:59.326 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "59084", "prevent_download" => "true", "source_id" => "18"} Pipelines: [:browser] 13:24:59.326 [debug] QUERY OK source="tasks" db=1.2ms queue=0.4ms idle=1069.1ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [58860] 13:24:59.326 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "58866", "prevent_download" => "true", "source_id" => "16"} Pipelines: [:browser] 13:24:59.326 [debug] QUERY OK source="media_items" db=0.8ms queue=0.3ms idle=45.2ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [58877] 13:24:59.327 [info] GET /sources/16/media/58871 13:24:59.327 [debug] QUERY OK source="sources" db=1.6ms queue=0.8ms idle=1047.1ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [6] 13:24:59.327 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "58871", "prevent_download" => "true", "source_id" => "16"} Pipelines: [:browser] 13:24:59.328 [debug] QUERY OK source="media_items" db=1.5ms queue=0.3ms idle=3.7ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [59084] 13:24:59.329 [debug] QUERY OK source="media_items" db=0.8ms queue=0.3ms idle=1.7ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [58871] 13:24:59.329 [debug] QUERY OK source="media_items" db=1.9ms queue=0.2ms idle=3.3ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [58866] 13:24:59.330 [debug] QUERY OK source="sources" db=1.5ms queue=0.5ms idle=0.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [16] 13:24:59.330 [debug] QUERY OK source="oban_jobs" db=1.7ms queue=0.6ms idle=1.4ms SELECT o0."id", o0."state", o0."queue", o0."worker", o0."args", o0."meta", o0."tags", o0."errors", o0."attempt", o0."attempted_by", o0."max_attempts", o0."priority", o0."attempted_at", o0."cancelled_at", o0."completed_at", o0."discarded_at", o0."inserted_at", o0."scheduled_at", o0."id" FROM "oban_jobs" AS o0 WHERE (o0."id" = ?) [202113] 13:24:59.330 [debug] QUERY OK source="tasks" db=1.8ms queue=0.6ms idle=1.1ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [58877] 13:24:59.330 [debug] QUERY OK source="sources" db=1.5ms queue=0.1ms idle=0.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [18] 13:24:59.331 [debug] QUERY OK source="tasks" db=1.9ms queue=0.5ms idle=0.0ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [59084] 13:24:59.332 [debug] QUERY OK source="sources" db=1.6ms queue=0.9ms idle=0.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [16] 13:24:59.332 [debug] QUERY OK source="settings" db=1.1ms idle=0.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:24:59.332 [debug] QUERY OK source="tasks" db=1.7ms queue=0.9ms idle=0.0ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [58871] 13:24:59.332 [debug] QUERY OK source="tasks" db=1.9ms queue=0.9ms idle=0.0ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [58866] 13:24:59.333 [debug] QUERY OK source="oban_jobs" db=0.5ms queue=0.8ms idle=0.0ms SELECT o0."id", o0."state", o0."queue", o0."worker", o0."args", o0."meta", o0."tags", o0."errors", o0."attempt", o0."attempted_by", o0."max_attempts", o0."priority", o0."attempted_at", o0."cancelled_at", o0."completed_at", o0."discarded_at", o0."inserted_at", o0."scheduled_at", o0."id" FROM "oban_jobs" AS o0 WHERE (o0."id" = ?) [202124] 13:24:59.333 [debug] QUERY OK source="sources" db=0.8ms queue=1.3ms idle=0.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [16] 13:24:59.333 [debug] QUERY OK source="settings" db=0.6ms queue=0.1ms idle=0.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:24:59.333 [debug] QUERY OK source="oban_jobs" db=1.0ms queue=0.4ms idle=0.0ms SELECT o0."id", o0."state", o0."queue", o0."worker", o0."args", o0."meta", o0."tags", o0."errors", o0."attempt", o0."attempted_by", o0."max_attempts", o0."priority", o0."attempted_at", o0."cancelled_at", o0."completed_at", o0."discarded_at", o0."inserted_at", o0."scheduled_at", o0."id" FROM "oban_jobs" AS o0 WHERE (o0."id" = ?) [202150] 13:24:59.334 [debug] QUERY OK source="oban_jobs" db=0.8ms idle=0.8ms SELECT o0."id", o0."state", o0."queue", o0."worker", o0."args", o0."meta", o0."tags", o0."errors", o0."attempt", o0."attempted_by", o0."max_attempts", o0."priority", o0."attempted_at", o0."cancelled_at", o0."completed_at", o0."discarded_at", o0."inserted_at", o0."scheduled_at", o0."id" FROM "oban_jobs" AS o0 WHERE (o0."id" = ?) [202120] 13:24:59.334 [debug] QUERY OK source="oban_jobs" db=0.7ms queue=0.1ms idle=0.5ms SELECT o0."id", o0."state", o0."queue", o0."worker", o0."args", o0."meta", o0."tags", o0."errors", o0."attempt", o0."attempted_by", o0."max_attempts", o0."priority", o0."attempted_at", o0."cancelled_at", o0."completed_at", o0."discarded_at", o0."inserted_at", o0."scheduled_at", o0."id" FROM "oban_jobs" AS o0 WHERE (o0."id" = ?) [202118] 13:24:59.334 [debug] QUERY OK source="settings" db=0.7ms idle=0.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:24:59.335 [debug] QUERY OK source="settings" db=1.0ms queue=0.2ms idle=0.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:24:59.335 [debug] QUERY OK source="settings" db=1.0ms idle=0.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:24:59.335 [debug] QUERY OK source="settings" db=0.4ms idle=0.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:24:59.335 [debug] QUERY OK source="settings" db=0.9ms idle=0.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:24:59.336 [debug] QUERY OK source="settings" db=0.8ms queue=0.1ms idle=0.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:24:59.336 [debug] QUERY OK source="settings" db=1.2ms idle=0.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:24:59.336 [debug] QUERY OK source="media_profiles" db=0.6ms idle=0.6ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:24:59.336 [debug] QUERY OK source="settings" db=0.4ms idle=0.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:24:59.337 [debug] QUERY OK source="settings" db=1.1ms idle=0.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:24:59.337 [debug] QUERY OK source="settings" db=1.4ms idle=0.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:24:59.338 [debug] QUERY OK source="settings" db=1.7ms idle=0.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:24:59.339 [debug] QUERY OK source="settings" db=0.7ms idle=1.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:24:59.339 [debug] QUERY OK source="settings" db=0.8ms idle=1.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:24:59.340 [debug] QUERY OK source="media_profiles" db=1.5ms idle=0.9ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:24:59.340 [debug] QUERY OK source="media_profiles" db=1.0ms idle=1.4ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:24:59.340 [debug] QUERY OK source="media_profiles" db=0.5ms idle=1.2ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:24:59.342 [debug] QUERY OK source="media_profiles" db=2.3ms idle=0.4ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:24:59.350 [debug] Invalid range request for media item: 651f8c56-1f1e-4059-9837-6c96abcc815e - serving full file 13:24:59.351 [info] Sent 200 in 28ms 13:24:59.352 [info] Sent 200 in 30ms 13:24:59.367 [info] Sent 200 in 42ms 13:24:59.368 [info] Sent 200 in 41ms 13:24:59.373 [info] Sent 200 in 47ms 13:24:59.373 [info] Sent 200 in 47ms 13:25:00.145 [info] GET /sources/3/media/58874 13:25:00.146 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "58874", "prevent_download" => "true", "source_id" => "3"} Pipelines: [:browser] 13:25:00.147 [debug] QUERY OK source="media_items" db=0.4ms idle=807.4ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [58874] 13:25:00.148 [debug] QUERY OK source="tasks" db=0.4ms idle=806.9ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [58874] 13:25:00.148 [debug] QUERY OK source="sources" db=0.5ms idle=806.7ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [3] 13:25:00.149 [debug] QUERY OK source="oban_jobs" db=0.6ms idle=807.7ms SELECT o0."id", o0."state", o0."queue", o0."worker", o0."args", o0."meta", o0."tags", o0."errors", o0."attempt", o0."attempted_by", o0."max_attempts", o0."priority", o0."attempted_at", o0."cancelled_at", o0."completed_at", o0."discarded_at", o0."inserted_at", o0."scheduled_at", o0."id" FROM "oban_jobs" AS o0 WHERE (o0."id" = ?) [202122] 13:25:00.150 [debug] QUERY OK source="settings" db=0.4ms idle=808.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:25:00.150 [debug] QUERY OK source="settings" db=0.4ms idle=3.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:25:00.151 [info] {"source":"oban","duration":333,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 13:25:00.151 [debug] QUERY OK source="settings" db=0.4ms idle=3.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:25:00.152 [debug] QUERY OK source="media_profiles" db=0.2ms idle=3.4ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:25:00.169 [info] Sent 200 in 23ms 13:25:00.422 [info] GET /media/42853c34-92f1-4340-8733-3ef8f7ccbc31/stream 13:25:00.422 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.stream/2 Parameters: %{"uuid" => "42853c34-92f1-4340-8733-3ef8f7ccbc31"} Pipelines: [:maybe_basic_auth] 13:25:00.424 [debug] QUERY OK source="media_items" db=0.9ms queue=0.1ms idle=272.2ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."uuid" = ?) ["42853c34-92f1-4340-8733-3ef8f7ccbc31"] 13:25:00.437 [debug] Invalid range request for media item: 42853c34-92f1-4340-8733-3ef8f7ccbc31 - serving full file 13:25:00.437 [info] Sent 200 in 15ms 13:25:00.871 [info] GET /sources/09902ec5-9171-4281-b14f-6d43687c6b1c/feed.xml 13:25:00.871 [debug] Processing with PinchflatWeb.Podcasts.PodcastController.rss_feed/2 Parameters: %{"uuid" => "09902ec5-9171-4281-b14f-6d43687c6b1c"} Pipelines: [:maybe_basic_auth] 13:25:00.872 [debug] QUERY OK source="sources" db=0.5ms idle=720.8ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."uuid" = ?) ["09902ec5-9171-4281-b14f-6d43687c6b1c"] 13:25:00.877 [debug] QUERY OK source="media_items" db=4.7ms idle=721.1ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND NOT (m0."media_filepath" IS NULL)) ORDER BY m0."uploaded_at" DESC LIMIT ? [21, 2000] 13:25:01.035 [info] GET /media/452a884d-3091-440d-8666-044525286cf2/stream 13:25:01.035 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.stream/2 Parameters: %{"uuid" => "452a884d-3091-440d-8666-044525286cf2"} Pipelines: [:maybe_basic_auth] 13:25:01.037 [debug] QUERY OK source="media_items" db=1.2ms idle=882.9ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."uuid" = ?) ["452a884d-3091-440d-8666-044525286cf2"] 13:25:01.092 [debug] Invalid range request for media item: 452a884d-3091-440d-8666-044525286cf2 - serving full file 13:25:01.093 [info] Sent 200 in 57ms 13:25:01.176 [info] GET /sources/b44d7276-120d-466b-98e7-728e24843c76/feed.xml 13:25:01.177 [debug] Processing with PinchflatWeb.Podcasts.PodcastController.rss_feed/2 Parameters: %{"uuid" => "b44d7276-120d-466b-98e7-728e24843c76"} Pipelines: [:maybe_basic_auth] 13:25:01.178 [debug] QUERY OK source="sources" db=0.8ms idle=895.2ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."uuid" = ?) ["b44d7276-120d-466b-98e7-728e24843c76"] 13:25:01.214 [debug] QUERY OK source="media_items" db=35.3ms queue=0.1ms idle=754.8ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND NOT (m0."media_filepath" IS NULL)) ORDER BY m0."uploaded_at" DESC LIMIT ? [18, 2000] 13:25:01.751 [debug] QUERY OK source="source_metadata" db=2.0ms idle=871.5ms SELECT s0."id", s0."metadata_filepath", s0."fanart_filepath", s0."poster_filepath", s0."banner_filepath", s0."source_id", s0."inserted_at", s0."updated_at", s0."source_id" FROM "source_metadata" AS s0 WHERE (s0."source_id" = ?) [21] 13:25:01.752 [debug] QUERY OK source="media_metadata" db=0.3ms idle=715.1ms SELECT m0."id", m0."metadata_filepath", m0."thumbnail_filepath", m0."media_item_id", m0."inserted_at", m0."updated_at", m0."media_item_id" FROM "media_metadata" AS m0 WHERE (m0."media_item_id" = ?) [58974] 13:25:01.758 [info] Sent 200 in 887ms 13:25:02.420 [info] GET /sources/17/media/55270 13:25:02.420 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "55270", "source_id" => "17"} Pipelines: [:browser] 13:25:02.421 [debug] QUERY OK source="media_items" db=0.3ms idle=669.8ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [55270] 13:25:02.422 [debug] QUERY OK source="tasks" db=0.1ms idle=669.1ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [55270] 13:25:02.422 [debug] QUERY OK source="sources" db=0.2ms idle=164.7ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [17] 13:25:02.423 [debug] QUERY OK source="settings" db=0.2ms idle=165.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:25:02.423 [debug] QUERY OK source="settings" db=0.1ms idle=50.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:25:02.424 [debug] QUERY OK source="settings" db=0.5ms idle=2.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:25:02.425 [debug] QUERY OK source="media_profiles" db=0.2ms idle=3.5ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:25:02.460 [info] Sent 200 in 39ms 13:25:07.234 [debug] QUERY OK source="source_metadata" db=0.4ms idle=977.0ms SELECT s0."id", s0."metadata_filepath", s0."fanart_filepath", s0."poster_filepath", s0."banner_filepath", s0."source_id", s0."inserted_at", s0."updated_at", s0."source_id" FROM "source_metadata" AS s0 WHERE (s0."source_id" = ?) [18] 13:25:07.236 [debug] QUERY OK source="media_metadata" db=0.8ms idle=978.7ms SELECT m0."id", m0."metadata_filepath", m0."thumbnail_filepath", m0."media_item_id", m0."inserted_at", m0."updated_at", m0."media_item_id" FROM "media_metadata" AS m0 WHERE (m0."media_item_id" = ?) [59071] 13:25:07.242 [info] Sent 200 in 6065ms 13:25:09.398 [info] {"args":{"id":2},"id":202952,"meta":{},"system_time":1767407109398060005,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 13:25:09.400 [debug] QUERY OK source="sources" db=1.2ms idle=1141.5ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [2] 13:25:09.401 [debug] QUERY OK source="settings" db=0.6ms queue=0.1ms idle=1143.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:25:09.402 [debug] QUERY OK source="media_profiles" db=0.9ms idle=1015.4ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:25:09.403 [debug] QUERY OK source="settings" db=0.6ms idle=13.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:25:09.403 [debug] Fetching recent media IDs from YouTube API for playlist: UUeE3lj6pLX_gCd0Yvns517Q 13:25:09.404 [debug] QUERY OK source="settings" db=0.3ms queue=0.1ms idle=5.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:25:09.404 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 13:25:10.020 [debug] QUERY OK source="media_items" db=2.3ms idle=617.3ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND m0."media_id" IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [2, "0k6I__61QDc", "tAnxIOSrasI", "qGmURDZnDhc", "vBsPoGzQPxA", "TiJoEoREmdE", "C-CkKUyzQhA", "K1UWf6n1FmY", "9VKS1P-aXSc", "kt_SNpPa2w4", "oaXa30IfZMc", "pUBcfLBwPXw", "WkG24B0xw1E", "fBQxlA3KI5U", "HbeqOllBS9o", "li1fOq_qqHM", "rsqGEZeczYw", "d7HFMZOp0S4", "oipxUVJUZrc", "cTxE_oPyD9Q", "yJlKrUX8Bvk", "pYtoIdfLeHA", "qPMGKmyQ1AA", "7W651YDFjhc", "EfUXdMBXauI", "804ky1qeBuE", "DRMng-9g9Ng", "Nzp4LPVF_7M", "1psbOjlzkyA", "IwMM9c9Q0Pw", "xhbzG8V0eSA", "-CSyf5_q-XQ", "C__g4XPdYRY", "7-FRyPsqWG0", "0-fliBPsvZI", "xLZYbjMl3hY", "qs36351JQys", "-aty2xx6kTI", "Ty7NA3HvUsk", "w6xdmHLxzSM", "-5YmR5lvMlQ", "fFbRmFdCoYc", "XkPAB-oXAoU", "rTecGGMrRKc", "tHjU0F1najQ", "Z6otzigVvWM", "9m36Ncgctbg", "B1KUJbbpoK0", "rqGLjKlA_tM", "PZDZuoa3kJE", ...] 13:25:10.029 [debug] QUERY OK source="media_items" db=6.1ms idle=622.4ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [2] 13:25:10.033 [debug] QUERY OK source="tasks" db=0.5ms idle=628.5ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [202977, 2, ~U[2026-01-03 02:25:10Z], ~U[2026-01-03 02:25:10Z]] 13:25:10.034 [info] {"args":{"id":2},"id":202952,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":635628,"event":"job:stop","queue_time":683971,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 13:25:12.653 [info] {"source":"oban","duration":2202,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:25:24.534 [info] GET /sources/14/media/32651/force_download 13:25:24.536 [debug] QUERY OK source="settings" db=0.8ms queue=0.1ms idle=1277.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:25:24.537 [debug] QUERY OK source="settings" db=0.5ms idle=1279.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:25:24.537 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 13:25:24.538 [error] #PID<0.10305.0> running PinchflatWeb.Endpoint (connection #PID<0.10304.0>, stream id 1) terminated Server: pinchflat.uiau7e.uncld.dev:80 (http) Request: GET /sources/14/media/32651/force_download ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/14/media/32651/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.10304.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/14/media/32651/force_download", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 60750}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYMzlESWotY1JDZXRjZHdrZ0ZKS0l5ZXFo.GqdyE5d8C4Bn_vhOUBh5sYgZqOeX3H-fbCio6vh2xAw", "from" => "gptbot(at)openai.com", "host" => "pinchflat.uiau7e.uncld.dev", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.3; +https://openai.com/gptbot)", "via" => "2.0 Caddy", "x-forwarded-for" => "74.7.227.183", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https", "x-openai-host-hash" => "454925582" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{ "_pinchflat_key" => "SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYMzlESWotY1JDZXRjZHdrZ0ZKS0l5ZXFo.GqdyE5d8C4Bn_vhOUBh5sYgZqOeX3H-fbCio6vh2xAw" }, halted: false, host: "pinchflat.uiau7e.uncld.dev", method: "GET", owner: #PID<0.10305.0>, params: %{}, path_info: ["sources", "14", "media", "32651", "force_download"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.uiau7e.uncld.dev", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {10, 210, 0, 2}, req_cookies: %{ "_pinchflat_key" => "SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYMzlESWotY1JDZXRjZHdrZ0ZKS0l5ZXFo.GqdyE5d8C4Bn_vhOUBh5sYgZqOeX3H-fbCio6vh2xAw" }, req_headers: [ {"accept", "*/*"}, {"accept-encoding", "gzip, br, deflate"}, {"cookie", "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYMzlESWotY1JDZXRjZHdrZ0ZKS0l5ZXFo.GqdyE5d8C4Bn_vhOUBh5sYgZqOeX3H-fbCio6vh2xAw"}, {"from", "gptbot(at)openai.com"}, {"host", "pinchflat.uiau7e.uncld.dev"}, {"user-agent", "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.3; +https://openai.com/gptbot)"}, {"via", "2.0 Caddy"}, {"x-forwarded-for", "74.7.227.183"}, {"x-forwarded-host", "pinchflat.uiau7e.uncld.dev"}, {"x-forwarded-proto", "https"}, {"x-openai-host-hash", "454925582"} ], request_path: "/sources/14/media/32651/force_download", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GIcXamdhX1R8OEIAAMui"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.10304.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/14/media/32651/force_download", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 60750}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYMzlESWotY1JDZXRjZHdrZ0ZKS0l5ZXFo.GqdyE5d8C4Bn_vhOUBh5sYgZqOeX3H-fbCio6vh2xAw", "from" => "gptbot(at)openai.com", "host" => "pinchflat.uiau7e.uncld.dev", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.3; +https://openai.com/gptbot)", "via" => "2.0 Caddy", "x-forwarded-for" => "74.7.227.183", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https", "x-openai-host-hash" => "454925582" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/14/media/32651/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.10304.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/14/media/32651/force_download", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 60750}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYMzlESWotY1JDZXRjZHdrZ0ZKS0l5ZXFo.GqdyE5d8C4Bn_vhOUBh5sYgZqOeX3H-fbCio6vh2xAw", "from" => "gptbot(at)openai.com", "host" => "pinchflat.uiau7e.uncld.dev", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.3; +https://openai.com/gptbot)", "via" => "2.0 Caddy", "x-forwarded-for" => "74.7.227.183", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https", "x-openai-host-hash" => "454925582" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{ " (truncated) 13:25:42.657 [info] {"source":"oban","duration":2128,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:25:45.021 [info] GET /sources/13/media/12738/force_download 13:25:45.022 [debug] QUERY OK source="settings" db=0.4ms queue=0.1ms idle=764.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:25:45.023 [debug] QUERY OK source="settings" db=0.6ms idle=765.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:25:45.023 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 13:25:45.024 [error] #PID<0.10307.0> running PinchflatWeb.Endpoint (connection #PID<0.10306.0>, stream id 1) terminated Server: pinchflat.uiau7e.uncld.dev:80 (http) Request: GET /sources/13/media/12738/force_download ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/13/media/12738/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.10306.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/13/media/12738/force_download", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 45842}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYMzlESWotY1JDZXRjZHdrZ0ZKS0l5ZXFo.GqdyE5d8C4Bn_vhOUBh5sYgZqOeX3H-fbCio6vh2xAw", "from" => "gptbot(at)openai.com", "host" => "pinchflat.uiau7e.uncld.dev", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.3; +https://openai.com/gptbot)", "via" => "2.0 Caddy", "x-forwarded-for" => "74.7.227.183", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https", "x-openai-host-hash" => "454925582" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{ "_pinchflat_key" => "SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYMzlESWotY1JDZXRjZHdrZ0ZKS0l5ZXFo.GqdyE5d8C4Bn_vhOUBh5sYgZqOeX3H-fbCio6vh2xAw" }, halted: false, host: "pinchflat.uiau7e.uncld.dev", method: "GET", owner: #PID<0.10307.0>, params: %{}, path_info: ["sources", "13", "media", "12738", "force_download"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.uiau7e.uncld.dev", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {10, 210, 0, 2}, req_cookies: %{ "_pinchflat_key" => "SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYMzlESWotY1JDZXRjZHdrZ0ZKS0l5ZXFo.GqdyE5d8C4Bn_vhOUBh5sYgZqOeX3H-fbCio6vh2xAw" }, req_headers: [ {"accept", "*/*"}, {"accept-encoding", "gzip, br, deflate"}, {"cookie", "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYMzlESWotY1JDZXRjZHdrZ0ZKS0l5ZXFo.GqdyE5d8C4Bn_vhOUBh5sYgZqOeX3H-fbCio6vh2xAw"}, {"from", "gptbot(at)openai.com"}, {"host", "pinchflat.uiau7e.uncld.dev"}, {"user-agent", "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.3; +https://openai.com/gptbot)"}, {"via", "2.0 Caddy"}, {"x-forwarded-for", "74.7.227.183"}, {"x-forwarded-host", "pinchflat.uiau7e.uncld.dev"}, {"x-forwarded-proto", "https"}, {"x-openai-host-hash", "454925582"} ], request_path: "/sources/13/media/12738/force_download", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GIcXbyx7YIA-8yYAAd1B"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.10306.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/13/media/12738/force_download", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 45842}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYMzlESWotY1JDZXRjZHdrZ0ZKS0l5ZXFo.GqdyE5d8C4Bn_vhOUBh5sYgZqOeX3H-fbCio6vh2xAw", "from" => "gptbot(at)openai.com", "host" => "pinchflat.uiau7e.uncld.dev", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.3; +https://openai.com/gptbot)", "via" => "2.0 Caddy", "x-forwarded-for" => "74.7.227.183", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https", "x-openai-host-hash" => "454925582" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/13/media/12738/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.10306.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/13/media/12738/force_download", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 45842}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYMzlESWotY1JDZXRjZHdrZ0ZKS0l5ZXFo.GqdyE5d8C4Bn_vhOUBh5sYgZqOeX3H-fbCio6vh2xAw", "from" => "gptbot(at)openai.com", "host" => "pinchflat.uiau7e.uncld.dev", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.3; +https://openai.com/gptbot)", "via" => "2.0 Caddy", "x-forwarded-for" => "74.7.227.183", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https", "x-openai-host-hash" => "454925582" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{ " (truncated) 13:26:00.152 [info] {"source":"oban","duration":342,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 13:26:05.574 [info] {"args":{"id":26},"id":202953,"meta":{},"system_time":1767407165574446008,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 13:26:05.575 [debug] QUERY OK source="sources" db=0.6ms idle=1317.8ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [26] 13:26:05.576 [debug] QUERY OK source="settings" db=0.5ms idle=1011.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:26:05.577 [debug] QUERY OK source="media_profiles" db=0.6ms idle=319.7ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:26:05.578 [debug] QUERY OK source="settings" db=0.6ms idle=10.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:26:05.578 [debug] Fetching recent media IDs from YouTube API for playlist: UU6NY7eg1FxCfAVX58yL0cJw 13:26:05.578 [debug] QUERY OK source="settings" db=0.4ms idle=4.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:26:05.578 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 13:26:06.036 [debug] QUERY OK source="media_items" db=4.1ms idle=455.9ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND m0."media_id" IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [26, "o2tiLxanOd0", "3Hkalon06bY", "acwCbVzHnRM", "m3Cddar422Y", "QItYx18RK4M", "iFrwlymvtTM", "CBKzBKWhNmE", "twi0ZP1ZWew", "MChkfGtdrgI", "usOf_0SOPl8", "7CamgxCV_lg", "CYW3qAtbiSg", "hkLPA0MEUFk", "Z9APq63an58", "MA2a2BtDQtE", "a23hasz0yk8", "o4tK4PhiK_c", "2-lUv1_A_KU", "W6GGXQ4xVdg", "TOIuoWmEqxo", "JRXSDo6asDk", "iAodr4mipf0", "12wArTNB9dk", "CFZ0TtEbofU", "RwW6yAVtf6Q", "9RshF2jpgLo", "MV8U7XQUpnY", "G0o-l5G0M4s", "FVOkr5w0O0I", "1IFJive9Bvc", "kuc2kAgYD8M", "jHOE86EMHvA", "CjuPAweX08c", "LH0RNHxukJs", "o6OxlF4vAuw", "Qxfr7h-PzdA", "xU_1w6OSnac", "-6G1TNBxp08", "o-ripoq_oXU", "Uevcwu2GLMs", "BAoXgNQ_wRI", "p4NWPk9B20I", "XKxqsR_4w_I", "BNtAWc-vLX4", "ktw-dS-26Gk", "Idbcu-oVtDs", "JCxqgAhaJj4", "A0vzWxUO5TA", "6M0wfDl0LEI", ...] 13:26:06.048 [debug] QUERY OK source="media_items" db=7.9ms queue=0.1ms idle=463.3ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [26] 13:26:06.053 [debug] QUERY OK source="tasks" db=0.8ms idle=473.6ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [202978, 26, ~U[2026-01-03 02:26:06Z], ~U[2026-01-03 02:26:06Z]] 13:26:06.054 [info] {"args":{"id":26},"id":202953,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":479155,"event":"job:stop","queue_time":542199,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 13:26:12.660 [info] {"source":"oban","duration":3112,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:26:35.689 [info] GET /media/b33f6d25-6b45-41e1-ae20-749fde206ba7/stream 13:26:35.690 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.stream/2 Parameters: %{"uuid" => "b33f6d25-6b45-41e1-ae20-749fde206ba7"} Pipelines: [:maybe_basic_auth] 13:26:35.692 [debug] QUERY OK source="media_items" db=1.7ms idle=1037.5ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."uuid" = ?) ["b33f6d25-6b45-41e1-ae20-749fde206ba7"] 13:26:35.710 [debug] Invalid range request for media item: b33f6d25-6b45-41e1-ae20-749fde206ba7 - serving full file 13:26:35.710 [info] Sent 200 in 21ms 13:26:39.682 [info] {"args":{"id":6},"id":202954,"meta":{},"system_time":1767407199682559503,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 13:26:39.683 [debug] QUERY OK source="sources" db=0.4ms idle=426.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [6] 13:26:39.684 [debug] QUERY OK source="settings" db=0.2ms queue=0.1ms idle=426.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:26:39.685 [debug] QUERY OK source="media_profiles" db=0.3ms idle=427.6ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:26:39.685 [debug] QUERY OK source="settings" db=0.2ms idle=9.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:26:39.686 [debug] Fetching recent media IDs from YouTube API for playlist: UUg0m_Ah8P_MQbnn77-vYnYw 13:26:39.686 [debug] QUERY OK source="settings" db=0.2ms idle=3.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:26:39.686 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 13:26:40.174 [debug] QUERY OK source="media_items" db=2.3ms idle=487.9ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND m0."media_id" IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [6, "9i6Qm3LV89c", "2PC3HH4izX4", "dJLpdoPNdZ8", "lqRHAbkn9bo", "nlYgNjtr904", "uHKLZ8LcCJA", "V3LW3EWUxqE", "XaTvV6zJEXk", "AjnHxtnxMhk", "vuJTLm11QmQ", "vUzRuvCi6lw", "NlxSd2y_gfI", "ivcFXtMGdE8", "m17ugzx_Ab4", "o5QiLKbHeMI", "moqdU9sMrRk", "Yi55tGTEMqQ", "rHliVvnQ5Pg", "nCZSTFM-v9k", "uasm2RENDH4", "musiLNtEyRY", "uSvqlME0IsI", "Yo0hmtg8LNc", "HOFD3h9Up9w", "uibJMXaSB7c", "NGq1EoY_r2I", "IL-UZlbO3zI", "-_txeeBP6dg", "iH7BiZvsczM", "rIKuiZVHfZo", "HRw20b6hb_s", "xOQPha-de4A", "L6IXwj-_X1k", "_7--BDD2pxk", "Xaq53-12iW8", "bfb-ZBwdvpo", "3DLbHio3ivA", "xhpwyar65ms", "UzEr8RISXds", "tHU6PeO4WDs", "2z1AaBGzA1g", "y-t3hyj7Mz8", "5ZUXEQ6d0dM", "pn8GF5HaKZc", "wH3XASrC2DA", "C_oeOAG0G5E", "c8gYHg1lZCg", "cPEXUpZ6CWk", "jST7T0L_k_w", ...] 13:26:40.178 [debug] QUERY OK source="media_items" db=1.9ms idle=491.5ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [6] 13:26:40.180 [debug] QUERY OK source="tasks" db=0.4ms idle=493.7ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [202979, 6, ~U[2026-01-03 02:26:40Z], ~U[2026-01-03 02:26:40Z]] 13:26:40.181 [info] {"args":{"id":6},"id":202954,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":498255,"event":"job:stop","queue_time":571284,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 13:26:42.665 [info] {"source":"oban","duration":3684,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:26:42.692 [info] {"args":{"id":10},"id":202955,"meta":{},"system_time":1767407202692296540,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 13:26:42.693 [debug] QUERY OK source="sources" db=0.5ms idle=1435.6ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [10] 13:26:42.694 [debug] QUERY OK source="settings" db=0.5ms idle=1013.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:26:42.694 [debug] QUERY OK source="media_profiles" db=0.7ms idle=28.8ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:26:42.695 [debug] QUERY OK source="settings" db=0.5ms idle=10.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:26:42.695 [debug] Fetching recent media IDs from YouTube API for playlist: UUmHz7DQbbkcY_UoWY8bBJLw 13:26:42.696 [debug] QUERY OK source="settings" db=0.3ms idle=3.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:26:42.696 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 13:26:43.081 [debug] QUERY OK source="media_items" db=4.0ms idle=383.6ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND m0."media_id" IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [10, "PhjtM9ePmYY", "BYRqpIciNLg", "KKoDQ42Fcpk", "AifAIqHezb8", "sjsS60OTXSQ", "KVouvdlUtGQ", "Th4RJNVZN3Q", "a9Zj-iWYC4w", "Z2_oFD9DMd0", "OW9WywZF_d4", "hFSwWzxrqUA", "XsPrNwyLDJM", "9NUcKPnPMEw", "GvP1jo9RstE", "8jul3DEwgMY", "e4K0Co-JeKQ", "wxoYf3KBlis", "YFQm8Hk73ug", "iu5rnQkfO6M", "RESslu3Bhuk", "vn9VDbacUgQ", "mLozqDnhqpQ", "GWXCCBsOMSg", "OXIpbrvFxfE", "hbZb1Q0mM7k", "lj2JTO1L1Tc", "dGjMw1SkmjU", "vBQFfmlTK_4", "91WqepC8kS0", "UUZfxQhKmfA", "aPsq5nqvhxg", "AJ7atBkisOU", "2fZ0nkP5dfo", "qKZXQGCLRJY", "F26dxTMmW10", "cYPuhhATDXc", "uLrOyIpjkZ8", "kDu56nXRqGQ", "I4lBTlClwww", "h23xksD0dN0", "SgameZUfeGo", "NPgbgiRJCxA", "-v88e4T8i_E", "HkgV_-nJOuE", "3h1vM0lIrpM", "gjExqY_iB38", "5ScP_aPBEiQ", "t5CkW-CKTZs", "gKKRYcy4BbU", ...] 13:26:43.085 [debug] QUERY OK source="settings" db=0.5ms queue=0.1ms idle=390.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:26:43.086 [debug] QUERY OK source="settings" db=0.4ms queue=0.1ms idle=390.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:26:43.086 [debug] Running yt-dlp command for action: get_media_attributes 13:26:43.088 [debug] QUERY OK source="settings" db=0.2ms idle=392.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:26:43.089 [debug] QUERY OK source="settings" db=0.4ms idle=392.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:26:43.089 [debug] QUERY OK source="settings" db=0.3ms idle=8.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:26:43.089 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=Z2_oFD9DMd0 --simulate --skip-download --output /downloads/Switch Angel/Season %(upload_date>%Y)S/s%(upload_date>%Y)Se%(upload_date>%m%d)S00 - %(title)S.%(ext)S --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --print-to-file %(.{id,title,live_status,original_url,description,aspect_ratio,duration,upload_date,timestamp,playlist_index,filename})j /tmp/pinchflat/data/49/39/49390b033472ba9e2637516a9da6102a16f03b2098b7605efe5299e417bf4ea2.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 13:26:43.541 [info] GET /sources/13/media/12741/force_download 13:26:43.547 [debug] QUERY OK source="settings" db=5.1ms queue=0.1ms idle=456.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:26:43.548 [debug] QUERY OK source="settings" db=0.7ms idle=461.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:26:43.549 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 13:26:43.549 [error] #PID<0.10320.0> running PinchflatWeb.Endpoint (connection #PID<0.10319.0>, stream id 1) terminated Server: pinchflat.uiau7e.uncld.dev:80 (http) Request: GET /sources/13/media/12741/force_download ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/13/media/12741/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.10319.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/13/media/12741/force_download", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 33218}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYMzlESWotY1JDZXRjZHdrZ0ZKS0l5ZXFo.GqdyE5d8C4Bn_vhOUBh5sYgZqOeX3H-fbCio6vh2xAw", "from" => "gptbot(at)openai.com", "host" => "pinchflat.uiau7e.uncld.dev", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.3; +https://openai.com/gptbot)", "via" => "2.0 Caddy", "x-forwarded-for" => "74.7.227.183", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https", "x-openai-host-hash" => "454925582" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{ "_pinchflat_key" => "SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYMzlESWotY1JDZXRjZHdrZ0ZKS0l5ZXFo.GqdyE5d8C4Bn_vhOUBh5sYgZqOeX3H-fbCio6vh2xAw" }, halted: false, host: "pinchflat.uiau7e.uncld.dev", method: "GET", owner: #PID<0.10320.0>, params: %{}, path_info: ["sources", "13", "media", "12741", "force_download"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.uiau7e.uncld.dev", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {10, 210, 0, 2}, req_cookies: %{ "_pinchflat_key" => "SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYMzlESWotY1JDZXRjZHdrZ0ZKS0l5ZXFo.GqdyE5d8C4Bn_vhOUBh5sYgZqOeX3H-fbCio6vh2xAw" }, req_headers: [ {"accept", "*/*"}, {"accept-encoding", "gzip, br, deflate"}, {"cookie", "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYMzlESWotY1JDZXRjZHdrZ0ZKS0l5ZXFo.GqdyE5d8C4Bn_vhOUBh5sYgZqOeX3H-fbCio6vh2xAw"}, {"from", "gptbot(at)openai.com"}, {"host", "pinchflat.uiau7e.uncld.dev"}, {"user-agent", "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.3; +https://openai.com/gptbot)"}, {"via", "2.0 Caddy"}, {"x-forwarded-for", "74.7.227.183"}, {"x-forwarded-host", "pinchflat.uiau7e.uncld.dev"}, {"x-forwarded-proto", "https"}, {"x-openai-host-hash", "454925582"} ], request_path: "/sources/13/media/12741/force_download", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GIcXfMyQ2fUxkAkAAd3h"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.10319.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/13/media/12741/force_download", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 33218}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYMzlESWotY1JDZXRjZHdrZ0ZKS0l5ZXFo.GqdyE5d8C4Bn_vhOUBh5sYgZqOeX3H-fbCio6vh2xAw", "from" => "gptbot(at)openai.com", "host" => "pinchflat.uiau7e.uncld.dev", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.3; +https://openai.com/gptbot)", "via" => "2.0 Caddy", "x-forwarded-for" => "74.7.227.183", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https", "x-openai-host-hash" => "454925582" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/13/media/12741/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.10319.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/13/media/12741/force_download", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 33218}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYMzlESWotY1JDZXRjZHdrZ0ZKS0l5ZXFo.GqdyE5d8C4Bn_vhOUBh5sYgZqOeX3H-fbCio6vh2xAw", "from" => "gptbot(at)openai.com", "host" => "pinchflat.uiau7e.uncld.dev", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.3; +https://openai.com/gptbot)", "via" => "2.0 Caddy", "x-forwarded-for" => "74.7.227.183", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https", "x-openai-host-hash" => "454925582" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{ " (truncated) 13:26:47.470 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=Z2_oFD9DMd0 --simulate --skip-download --output /downloads/Switch Angel/Season %(upload_date>%Y)S/s%(upload_date>%Y)Se%(upload_date>%m%d)S00 - %(title)S.%(ext)S --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --print-to-file %(.{id,title,live_status,original_url,description,aspect_ratio,duration,upload_date,timestamp,playlist_index,filename})j /tmp/pinchflat/data/49/39/49390b033472ba9e2637516a9da6102a16f03b2098b7605efe5299e417bf4ea2.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 1 with: ERROR: [youtube] Z2_oFD9DMd0: This live event will begin in a few moments. 13:26:47.470 [error] Error creating media item 'Z2_oFD9DMd0' from URL: {:error, "ERROR: [youtube] Z2_oFD9DMd0: This live event will begin in a few moments.\n", 1} 13:26:47.472 [debug] QUERY OK source="media_items" db=0.9ms queue=0.1ms idle=1214.0ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [10] 13:26:47.475 [debug] QUERY OK source="tasks" db=0.4ms idle=217.6ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [202980, 10, ~U[2026-01-03 02:26:47Z], ~U[2026-01-03 02:26:47Z]] 13:26:47.475 [info] {"args":{"id":10},"id":202955,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":4783028,"event":"job:stop","queue_time":130027,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 13:27:00.153 [info] {"source":"oban","duration":485,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 13:27:03.745 [info] {"args":{"id":9},"id":202956,"meta":{},"system_time":1767407223744706631,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 13:27:03.746 [debug] QUERY OK source="sources" db=0.5ms queue=0.1ms idle=488.1ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [9] 13:27:03.747 [debug] QUERY OK source="settings" db=0.4ms queue=0.1ms idle=489.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:27:03.748 [debug] QUERY OK source="media_profiles" db=0.6ms idle=490.0ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:27:03.749 [debug] QUERY OK source="settings" db=0.5ms queue=0.1ms idle=11.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:27:03.749 [debug] Fetching recent media IDs from YouTube API for playlist: UUy0Pr5u-MwGXXzp_GDd4m_g 13:27:03.750 [debug] QUERY OK source="settings" db=0.6ms idle=5.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:27:03.750 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 13:27:04.176 [debug] QUERY OK source="media_items" db=5.0ms idle=425.3ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND m0."media_id" IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [9, "97DBlIPSMkI", "V7Q9VnfzRqE", "Nub2m3iioSw", "Tpk6NNZubqU", "L4Eh-MtBFFk", "sa8p75KJqOc", "2gpPC0vsry0", "B2l4YfAav6M", "iL1qKxcaZnU", "NH5AAcLn03o", "8fOaCUvVQpY", "8aQ7sJ9EyaY", "ld0ngHU3YQ0", "uKzsA5kc8jw", "_A1dxw_T6dw", "TFVA0Bc5ajA", "IgFSOa0RBxs", "fGAe2cenBhs", "a6_0p8e42Y4", "vnR7jnJYN-k", "db6_ragog48", "SMKDYoXrZzw", "-fM_uGwlRlU", "kRxJ2g3T0zs", "GgU7L-z0kbA", "yFZJ6Qb8mDY", "YkyTbtgcfJU", "k01ARI01oMU", "ToFKhGfGgc0", "MU8JlJIuwh4", "IY36QIh6VG8", "brtcZFHW0P4", "A39Glu9I9fk", "Ib_1jixUkLw", "c9UIDwF7oS4", "CcSE-YHRJP4", "Tpmb_mTKuhs", "yNbz6f5dMLE", "BAVQcOWZi-Y", "Fa7RxeYNUTw", "teIoBQdGT5s", "UqykI_3CT-g", "vBeWkDTK6Eg", "qOp_nyKqmic", "fEqSlPpXHYk", "lII4lxNpPVg", "BaxD8BI3wI4", "me_afppRbyI", "C69B2k3fAvs", ...] 13:27:04.185 [debug] QUERY OK source="media_items" db=6.2ms idle=431.9ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [9] 13:27:04.189 [debug] QUERY OK source="tasks" db=0.8ms idle=438.3ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [202981, 9, ~U[2026-01-03 02:27:04Z], ~U[2026-01-03 02:27:04Z]] 13:27:04.190 [info] {"args":{"id":9},"id":202956,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":445167,"event":"job:stop","queue_time":636310,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 13:27:12.669 [info] {"source":"oban","duration":3685,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:27:20.798 [info] {"args":{"id":11},"id":202957,"meta":{},"system_time":1767407240798437982,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 13:27:20.799 [debug] QUERY OK source="sources" db=0.5ms idle=1541.6ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [11] 13:27:20.800 [debug] QUERY OK source="settings" db=0.7ms idle=1011.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:27:20.802 [debug] QUERY OK source="media_profiles" db=1.0ms idle=543.9ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:27:20.803 [debug] QUERY OK source="settings" db=0.6ms idle=11.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:27:20.803 [debug] Fetching recent media IDs from YouTube API for playlist: UUJ901NqoRaXMnIm7aOjLyuA 13:27:20.803 [debug] QUERY OK source="settings" db=0.4ms idle=5.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:27:20.804 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 13:27:21.338 [debug] QUERY OK source="media_items" db=5.0ms idle=533.6ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND m0."media_id" IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [11, "1ji7g8qZJ_4", "xP5WmZg7OMg", "HBoV87Jndh8", "-zpzRklxMEo", "9AX85j6Lp4M", "p2U9d4FWDaI", "hfT6XVSa2xE", "qBOKYwe8NzA", "Cf5jL5JNq7k", "bAV0y2acB9c", "XE6JvrChQ_Q", "Efv456Ks9ms", "qgiJ4C5s46U", "KaVC_mTFqHk", "M6gat-hai0I", "_xwFJzOtQv0", "Ao-M_YvfhXY", "SKHWQwf0ago", "gmuFtWZG3v8", "H4oeJ87TMt4", "rS2fDo6mhS8", "aOF6Pe_bTeI", "x8B3Z91qkoE", "fVvYTWAHoBQ", "8r6xqWTqcPQ", "k677A--BwGE", "CSTtrz8t1eg", "w6Ej3Iim4Ic", "jO8S8_KX6p0", "tslsVdOjWFM", "dckL2BCDYmQ", "E3N8_pRRtGM", "qeOEDUgy5xA", "MIPvNqPwMxc", "V2GelRPp5fg", "jWH5H6Y6T-A", "1ObIAwtqt9k", "yVdv1xVggZ4", "Pxpz4211gMI", "UEUAHI0AZu4", "gitCR-iTofw", "eTg2rHYqUZc", "QnOIm4U7Dzs", "RYNFRbP4OWQ", "R3kNCz120XM", "vMflt2fJZYw", "4DkhBa_L_4E", "4IqFTPw6Mzk", "AepfCktyPLk", ...] 13:27:21.352 [debug] QUERY OK source="media_items" db=9.9ms idle=541.8ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [11] 13:27:21.360 [debug] QUERY OK source="tasks" db=1.0ms idle=21.3ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [202982, 11, ~U[2026-01-03 02:27:21Z], ~U[2026-01-03 02:27:21Z]] 13:27:21.362 [info] {"args":{"id":11},"id":202957,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":562610,"event":"job:stop","queue_time":544188,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 13:27:42.671 [info] {"source":"oban","duration":1128,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:27:47.333 [info] GET /sources/11/media/58657/force_download 13:27:47.334 [debug] QUERY OK source="settings" db=0.4ms idle=1076.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:27:47.335 [debug] QUERY OK source="settings" db=0.3ms idle=461.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:27:47.335 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 13:27:47.336 [error] #PID<0.10330.0> running PinchflatWeb.Endpoint (connection #PID<0.10329.0>, stream id 1) terminated Server: pinchflat.uiau7e.uncld.dev:80 (http) Request: GET /sources/11/media/58657/force_download ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/11/media/58657/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.10329.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/11/media/58657/force_download", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 44940}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYMzlESWotY1JDZXRjZHdrZ0ZKS0l5ZXFo.GqdyE5d8C4Bn_vhOUBh5sYgZqOeX3H-fbCio6vh2xAw", "from" => "gptbot(at)openai.com", "host" => "pinchflat.uiau7e.uncld.dev", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.3; +https://openai.com/gptbot)", "via" => "2.0 Caddy", "x-forwarded-for" => "74.7.227.183", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https", "x-openai-host-hash" => "454925582" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{ "_pinchflat_key" => "SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYMzlESWotY1JDZXRjZHdrZ0ZKS0l5ZXFo.GqdyE5d8C4Bn_vhOUBh5sYgZqOeX3H-fbCio6vh2xAw" }, halted: false, host: "pinchflat.uiau7e.uncld.dev", method: "GET", owner: #PID<0.10330.0>, params: %{}, path_info: ["sources", "11", "media", "58657", "force_download"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.uiau7e.uncld.dev", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {10, 210, 0, 2}, req_cookies: %{ "_pinchflat_key" => "SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYMzlESWotY1JDZXRjZHdrZ0ZKS0l5ZXFo.GqdyE5d8C4Bn_vhOUBh5sYgZqOeX3H-fbCio6vh2xAw" }, req_headers: [ {"accept", "*/*"}, {"accept-encoding", "gzip, br, deflate"}, {"cookie", "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYMzlESWotY1JDZXRjZHdrZ0ZKS0l5ZXFo.GqdyE5d8C4Bn_vhOUBh5sYgZqOeX3H-fbCio6vh2xAw"}, {"from", "gptbot(at)openai.com"}, {"host", "pinchflat.uiau7e.uncld.dev"}, {"user-agent", "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.3; +https://openai.com/gptbot)"}, {"via", "2.0 Caddy"}, {"x-forwarded-for", "74.7.227.183"}, {"x-forwarded-host", "pinchflat.uiau7e.uncld.dev"}, {"x-forwarded-proto", "https"}, {"x-openai-host-hash", "454925582"} ], request_path: "/sources/11/media/58657/force_download", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GIcXi6bUQAV_7kYAAd9B"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.10329.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/11/media/58657/force_download", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 44940}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYMzlESWotY1JDZXRjZHdrZ0ZKS0l5ZXFo.GqdyE5d8C4Bn_vhOUBh5sYgZqOeX3H-fbCio6vh2xAw", "from" => "gptbot(at)openai.com", "host" => "pinchflat.uiau7e.uncld.dev", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.3; +https://openai.com/gptbot)", "via" => "2.0 Caddy", "x-forwarded-for" => "74.7.227.183", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https", "x-openai-host-hash" => "454925582" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/11/media/58657/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.10329.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/11/media/58657/force_download", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 44940}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYMzlESWotY1JDZXRjZHdrZ0ZKS0l5ZXFo.GqdyE5d8C4Bn_vhOUBh5sYgZqOeX3H-fbCio6vh2xAw", "from" => "gptbot(at)openai.com", "host" => "pinchflat.uiau7e.uncld.dev", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.3; +https://openai.com/gptbot)", "via" => "2.0 Caddy", "x-forwarded-for" => "74.7.227.183", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https", "x-openai-host-hash" => "454925582" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{ " (truncated) 13:27:59.917 [info] {"args":{"id":15},"id":202958,"meta":{},"system_time":1767407279917573577,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 13:27:59.918 [debug] QUERY OK source="sources" db=0.4ms queue=0.1ms idle=661.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [15] 13:27:59.920 [debug] QUERY OK source="settings" db=0.4ms queue=0.1ms idle=662.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:27:59.920 [debug] QUERY OK source="media_profiles" db=0.3ms queue=0.1ms idle=662.9ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:27:59.921 [debug] QUERY OK source="settings" db=0.4ms queue=0.1ms idle=11.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:27:59.922 [debug] Fetching recent media IDs from YouTube API for playlist: UU5qRAYQmCLx8hFGIiTWSQvA 13:27:59.923 [debug] QUERY OK source="settings" db=0.5ms queue=0.2ms idle=5.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:27:59.923 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 13:28:00.155 [info] {"source":"oban","duration":490,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 13:28:00.362 [debug] QUERY OK source="media_items" db=5.0ms idle=437.7ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND m0."media_id" IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [15, "EMmIdkwn6a4", "EBT3EIoJpDc", "P2j2jM33fbk", "KuYhCywx8JM", "EteM8YNAFu8", "-KN9sfrroJA", "35D6yzUQM8I", "pIqvmN8ePkc", "rR5RqL2cjPE", "B2mmx85ZIsE", "b-jTeTJ1ekk", "Qa4dYWqfgmg", "TZZgrQEsl4c", "hMFEigXIhgA", "yf8ozrYeFEk", "QoCmQRZKU_c", "Qa9rFTiItTE", "Kxw9tq49VBM", "aLj4QgEf7gQ", "-D7c5td5vhw", "UNJUpex0blc", "Afa2PJq3okY", "r9A1srY7LdU", "m6YZoOWrLlk", "RKSlnQcuZt4", "qEjkDPJmKIo", "fZirHVq8wp0", "jdB56zAMJgE", "F92Oe7JuDtI", "luEgOCX58gw", "9CkNfdQpsuo", "eC3Mv474A8c", "mq6lsIgLLqY", "Wqmn4OTW6Fw", "4yYMQFLVRNc", "TsdMEmH2Lsw", "HQeTYLxz6iY", "V-JtebgnFoM", "2cXS3i36Kh8", "wznCZtGitN8", "2tYVGxZMOiQ", "9bxljq6ljbE", "9hHVjpo_HDA", "w8bqGx4ZtYQ", "yFYGd9irJ5k", "WTfhL2-cT1U", "LCR3ZsqWhuo", "Tj09jojsiaM", "_GZvVqjqlM0", ...] 13:28:00.374 [debug] QUERY OK source="media_items" db=9.6ms idle=443.4ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [15] 13:28:00.377 [debug] QUERY OK source="tasks" db=0.6ms idle=221.9ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [202983, 15, ~U[2026-01-03 02:28:00Z], ~U[2026-01-03 02:28:00Z]] 13:28:00.378 [info] {"args":{"id":15},"id":202958,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":460469,"event":"job:stop","queue_time":639142,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 13:28:03.928 [info] {"args":{"id":58546},"id":201954,"meta":{},"system_time":1767407283928652239,"max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","event":"job:start","attempt":10,"tags":["media_item","media_fetching","show_in_dashboard"]} 13:28:03.929 [debug] QUERY OK source="media_items" db=0.3ms idle=1671.9ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [58546] 13:28:03.929 [info] User scripts lifecyle file either not present or is empty. Skipping. 13:28:03.930 [debug] QUERY OK source="sources" db=0.4ms idle=1672.7ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [5] 13:28:03.931 [debug] QUERY OK source="media_profiles" db=0.2ms idle=1012.3ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:28:03.932 [debug] QUERY OK source="media_items" db=0.6ms idle=10.1ms SELECT 1 FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) LIMIT 1 [58546] 13:28:03.933 [debug] QUERY OK source="media_metadata" db=0.1ms idle=4.8ms SELECT m0."id", m0."metadata_filepath", m0."thumbnail_filepath", m0."media_item_id", m0."inserted_at", m0."updated_at", m0."media_item_id" FROM "media_metadata" AS m0 WHERE (m0."media_item_id" = ?) [58546] 13:28:03.933 [debug] QUERY OK source="media_profiles" db=0.2ms idle=4.2ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:28:03.934 [debug] QUERY OK source="settings" db=0.2ms idle=3.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:28:03.935 [debug] QUERY OK source="settings" db=0.1ms idle=3.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:28:03.935 [debug] Running yt-dlp command for action: get_downloadable_status 13:28:03.937 [debug] QUERY OK source="settings" db=0.1ms idle=4.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:28:03.937 [debug] QUERY OK source="settings" db=0.1ms idle=3.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:28:03.937 [debug] QUERY OK source="settings" db=0.1ms idle=3.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:28:03.937 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=CcUb7Ky2oSI --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/00/4f/004f0e85cf5e05cd0987215b805273522d7ecaabdf63e15d0365049462ac3d2f.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 13:28:04.931 [info] {"args":{"id":18},"id":202959,"meta":{},"system_time":1767407284930721802,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 13:28:04.932 [debug] QUERY OK source="sources" db=0.6ms queue=0.1ms idle=994.3ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [18] 13:28:04.933 [debug] QUERY OK source="settings" db=0.4ms queue=0.1ms idle=995.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:28:04.934 [debug] QUERY OK source="media_profiles" db=0.3ms idle=995.8ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:28:04.934 [debug] QUERY OK source="settings" db=0.2ms idle=10.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:28:04.934 [debug] Fetching recent media IDs from YouTube API for playlist: UUuisDAMnvHMYuLFRedMgmVw 13:28:04.935 [debug] QUERY OK source="settings" db=0.4ms idle=4.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:28:04.935 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 13:28:05.364 [debug] QUERY OK source="media_items" db=4.2ms idle=428.2ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND m0."media_id" IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [18, "mf2Em7F_qDM", "PjvBtlIGGQU", "EF_PO-pALOQ", "j9eh7huEF4A", "y3FGuwfGzL0", "ZWH_eu9wdUE", "UccWWifa8jA", "0L8xWydKOhk", "CkSloYV3ay4", "SkQ7ywGW2HY", "QM3qu001Xdk", "jOTurZWIEmw", "pojDco-WhA4", "GD19Y1VYBKY", "cvViWSBLu-U", "wXm5ocXv9ho", "uB1Tk9eXQbk", "I7vb-PGArW4", "0h9qvAA5dfQ", "7yx-SecBATo", "oj1ySj7TVJk", "dtTdjRB4Q4g", "mpfcVNb8Mhs", "D3MFnCKv2Mc", "458_RTLWN2E", "W26HiyQ5k1s", "w4NDxPYJs1I", "cxuEV05UN7U", "5cPjR5FVDOw", "nJhbZNSrP4c", "X9Eu7mui35E", "wrgZHIpa6F0", "JEN7jfNqy1A", "v31DYiS2LbY", "iJfD5wWLvuM", "qPVTMbiyPLE", "rM_nvsztYlw", "IoD1j3ZG-SQ", "DDnqxbWvIgQ", "HIhF6C1yc7M", "DlNIxjiqQvs", "JO0-kOXXMEw", "2DihqSsed3w", "uDlvlF5iKz8", "v2jg_5WZ41o", "JekH9K8_SS8", "xVV_6qW_Ho8", "qYOABpvD49s", "VAw8zvyLmfE", ...] 13:28:05.372 [debug] QUERY OK source="media_items" db=6.2ms idle=432.7ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [18] 13:28:05.376 [debug] QUERY OK source="tasks" db=0.8ms idle=440.3ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [202984, 18, ~U[2026-01-03 02:28:05Z], ~U[2026-01-03 02:28:05Z]] 13:28:05.377 [info] {"args":{"id":18},"id":202959,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":445767,"event":"job:stop","queue_time":644111,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 13:28:10.965 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=CcUb7Ky2oSI --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/00/4f/004f0e85cf5e05cd0987215b805273522d7ecaabdf63e15d0365049462ac3d2f.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 13:28:10.966 [debug] Running yt-dlp command for action: download 13:28:10.967 [debug] QUERY OK source="settings" db=0.4ms idle=1709.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:28:10.968 [debug] QUERY OK source="settings" db=0.5ms idle=1710.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:28:10.968 [debug] QUERY OK source="settings" db=0.4ms idle=1711.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:28:10.969 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=CcUb7Ky2oSI --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --embed-subs --sub-langs en --write-thumbnail --convert-thumbnail jpg --output thumbnail:/downloads/CodeSync/Season %(upload_date>%Y)S/s%(upload_date>%Y)Se%(upload_date>%m%d)S99 - %(title)S-thumb.%(ext)S --embed-thumbnail --convert-thumbnail jpg --write-info-json --clean-info-json --embed-metadata --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --sponsorblock-mark sponsor,intro,outro,selfpromo,preview,filler,interaction,music_offtopic --output /downloads/CodeSync/Season %(upload_date>%Y)S/s%(upload_date>%Y)Se%(upload_date>%m%d)S99 - %(title)S.%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/29/a6/29a6d5a75690a371a9f6baf821b7f140f286641c702db4928f7743396126cfae.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 13:28:12.676 [info] {"source":"oban","duration":4013,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:28:15.972 [info] {"args":{"id":16},"id":202960,"meta":{},"system_time":1767407295972220524,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 13:28:15.974 [debug] QUERY OK source="sources" db=1.1ms idle=1715.7ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [16] 13:28:15.976 [debug] QUERY OK source="settings" db=1.0ms idle=1717.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:28:15.977 [debug] QUERY OK source="media_profiles" db=0.7ms queue=0.1ms idle=1018.9ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:28:15.979 [debug] QUERY OK source="settings" db=1.1ms queue=0.2ms idle=15.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:28:15.979 [debug] Fetching recent media IDs from YouTube API for playlist: UUPPfK7Nq_yQR84rn1wcTXBg 13:28:15.984 [debug] QUERY OK source="settings" db=3.4ms queue=0.2ms idle=8.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:28:15.984 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 13:28:16.325 [debug] QUERY OK source="media_items" db=4.1ms idle=346.5ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND m0."media_id" IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [16, "BiTNUZ2zONY", "7pVLE7ggkcc", "YAh-xEteBz4", "6hNpMT5OwGo", "vx3oGZYqxm4", "7W_ZSNuS-4w", "CxUC2HXvO84", "RxapAZRYJ6I", "f2ainZL8Tzk", "KJtASaKc95g", "yBCh5cyI0Po", "dg_HQL3GBcY", "ZiVvXPpo0eE", "YO1TnWptv3o", "HwnBnsQBeOA", "CCE2v3oIa74", "OWVPYr9e76Y", "VApJtIyMEec", "XtOIQYVq26o", "gZL1KzV54Cw", "kmU-Eazta1s", "XXthHXEpEP8", "dPw_HkMgYI0", "rxq-TvgNCBU", "SaCbUtTuLhA", "TWLqSk4ZlN0", "p7_rduK5WA0", "lNZ56C-f4a8", "GlK3f1cs_l4", "Yabwyb14-BQ", "WupRwvJ7sOc", "MhpoNL1gZbw", "yUfm6AbtJ0g", "y8zfgIgZ4c0", "gOwjmKMmkV4", "aTiunvocl5c", "KebjX3KEgWQ", "0T2MYXljL5o", "i7sbS92R4cg", "66CDGzjLBtY", "T_W0FWiJmM8", "u_80rUKItGc", "C9_wibbg1Ug", "A4mg1ZUb-7s", "YmUfZt4Ku9s", "DoWsgrlIjYU", "gc5ojxTuwOg", "3AMdPMoGJus", "htYY8VwN-9g", ...] 13:28:16.333 [debug] QUERY OK source="media_items" db=3.5ms queue=0.1ms idle=353.3ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [16] 13:28:16.347 [debug] QUERY OK source="tasks" db=0.7ms idle=362.3ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [202985, 16, ~U[2026-01-03 02:28:16Z], ~U[2026-01-03 02:28:16Z]] 13:28:16.351 [info] {"args":{"id":16},"id":202960,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":375105,"event":"job:stop","queue_time":754643,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 13:28:19.283 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=CcUb7Ky2oSI --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --embed-subs --sub-langs en --write-thumbnail --convert-thumbnail jpg --output thumbnail:/downloads/CodeSync/Season %(upload_date>%Y)S/s%(upload_date>%Y)Se%(upload_date>%m%d)S99 - %(title)S-thumb.%(ext)S --embed-thumbnail --convert-thumbnail jpg --write-info-json --clean-info-json --embed-metadata --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --sponsorblock-mark sponsor,intro,outro,selfpromo,preview,filler,interaction,music_offtopic --output /downloads/CodeSync/Season %(upload_date>%Y)S/s%(upload_date>%Y)Se%(upload_date>%m%d)S99 - %(title)S.%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/29/a6/29a6d5a75690a371a9f6baf821b7f140f286641c702db4928f7743396126cfae.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 1 with: WARNING: The extractor specified to use impersonation for this download, but no impersonate target is available. If you encounter errors, then see https://github.com/yt-dlp/yt-dlp#impersonation for information on installing the required dependencies ERROR: Unable to download video subtitles for 'en': HTTP Error 429: Too Many Requests 13:28:19.284 [error] yt-dlp download error for media item #58546: "WARNING: The extractor specified to use impersonation for this download, but no impersonate target is available. If you encounter errors, then see https://github.com/yt-dlp/yt-dlp#impersonation for information on installing the required dependencies\nERROR: Unable to download video subtitles for 'en': HTTP Error 429: Too Many Requests\n" 13:28:19.287 [info] {"error":"** (Oban.PerformError) Pinchflat.Downloading.MediaDownloadWorker failed with {:error, :download_failed}","args":{"id":58546},"id":201954,"meta":{},"state":"failure","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":15356152,"event":"job:exception","queue_time":467713,"attempt":10,"tags":["media_item","media_fetching","show_in_dashboard"]} 13:28:40.548 [info] GET /sources/16/media/58881 13:28:40.549 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "58881", "prevent_download" => "true", "source_id" => "16"} Pipelines: [:browser] 13:28:40.550 [debug] QUERY OK source="media_items" db=0.9ms queue=0.1ms idle=1287.5ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [58881] 13:28:40.551 [debug] QUERY OK source="tasks" db=0.7ms idle=1289.1ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [58881] 13:28:40.552 [debug] QUERY OK source="sources" db=0.8ms idle=534.5ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [16] 13:28:40.557 [debug] QUERY OK source="oban_jobs" db=5.3ms idle=290.6ms SELECT o0."id", o0."state", o0."queue", o0."worker", o0."args", o0."meta", o0."tags", o0."errors", o0."attempt", o0."attempted_by", o0."max_attempts", o0."priority", o0."attempted_at", o0."cancelled_at", o0."completed_at", o0."discarded_at", o0."inserted_at", o0."scheduled_at", o0."id" FROM "oban_jobs" AS o0 WHERE (o0."id" = ?) [202126] 13:28:40.558 [debug] QUERY OK source="settings" db=0.3ms queue=0.1ms idle=296.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:28:40.559 [debug] QUERY OK source="settings" db=0.2ms idle=8.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:28:40.560 [debug] QUERY OK source="settings" db=0.7ms idle=8.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:28:40.562 [debug] QUERY OK source="media_profiles" db=0.8ms idle=9.5ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:28:40.582 [info] Sent 200 in 33ms 13:28:42.679 [info] {"source":"oban","duration":2094,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:28:47.585 [info] GET /sources/13/media/45966/force_download 13:28:47.586 [debug] QUERY OK source="settings" db=0.6ms queue=0.1ms idle=1324.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:28:47.587 [debug] QUERY OK source="settings" db=0.3ms queue=0.2ms idle=1325.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:28:47.588 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 13:28:47.588 [error] #PID<0.10348.0> running PinchflatWeb.Endpoint (connection #PID<0.10347.0>, stream id 1) terminated Server: pinchflat.uiau7e.uncld.dev:80 (http) Request: GET /sources/13/media/45966/force_download ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/13/media/45966/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.10347.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/13/media/45966/force_download", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 35576}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "from" => "gptbot(at)openai.com", "host" => "pinchflat.uiau7e.uncld.dev", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.3; +https://openai.com/gptbot)", "via" => "2.0 Caddy", "x-forwarded-for" => "74.7.227.183", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https", "x-openai-host-hash" => "454925582" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.uiau7e.uncld.dev", method: "GET", owner: #PID<0.10348.0>, params: %{}, path_info: ["sources", "13", "media", "45966", "force_download"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.uiau7e.uncld.dev", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {10, 210, 0, 2}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"accept-encoding", "gzip, br, deflate"}, {"from", "gptbot(at)openai.com"}, {"host", "pinchflat.uiau7e.uncld.dev"}, {"user-agent", "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.3; +https://openai.com/gptbot)"}, {"via", "2.0 Caddy"}, {"x-forwarded-for", "74.7.227.183"}, {"x-forwarded-host", "pinchflat.uiau7e.uncld.dev"}, {"x-forwarded-proto", "https"}, {"x-openai-host-hash", "454925582"} ], request_path: "/sources/13/media/45966/force_download", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GIcXma4mvq4p0ZoAAeDh"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.10347.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/13/media/45966/force_download", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 35576}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "from" => "gptbot(at)openai.com", "host" => "pinchflat.uiau7e.uncld.dev", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.3; +https://openai.com/gptbot)", "via" => "2.0 Caddy", "x-forwarded-for" => "74.7.227.183", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https", "x-openai-host-hash" => "454925582" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/13/media/45966/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.10347.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/13/media/45966/force_download", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 35576}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "from" => "gptbot(at)openai.com", "host" => "pinchflat.uiau7e.uncld.dev", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.3; +https://openai.com/gptbot)", "via" => "2.0 Caddy", "x-forwarded-for" => "74.7.227.183", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https", "x-openai-host-hash" => "454925582" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.uiau7e.uncld.dev", method: "GET", owner: #PID<0.10348.0>, params: %{}, path_info: ["sources", "13", "media", "45966", "force_download"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.uiau7e.uncld.dev", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {10, 210, 0, 2}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"accept-en (truncated) 13:29:00.156 [info] {"source":"oban","duration":324,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 13:29:12.683 [info] {"source":"oban","duration":2744,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:29:18.131 [info] {"args":{"id":20},"id":202961,"meta":{},"system_time":1767407358131630527,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 13:29:18.132 [debug] QUERY OK source="sources" db=0.4ms idle=1012.7ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [20] 13:29:18.133 [debug] QUERY OK source="settings" db=0.3ms idle=870.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:29:18.133 [debug] QUERY OK source="media_profiles" db=0.3ms idle=871.2ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:29:18.134 [debug] QUERY OK source="settings" db=0.2ms idle=10.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:29:18.134 [debug] Fetching recent media IDs from YouTube API for playlist: UU3HjB3X8jeENm46HCkI0Inw 13:29:18.134 [debug] QUERY OK source="settings" db=0.1ms idle=2.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:29:18.134 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 13:29:18.592 [debug] QUERY OK source="media_items" db=3.1ms idle=456.9ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND m0."media_id" IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [20, "CISwNCR8EXc", "EiIJqc5mV90", "8xJUjtnu72E", "Whh2rDVxvYg", "VybtaBZZqCg", "fuIOAraiRAY", "Ri4qqynMLHk", "xglNhNm95KQ", "5hEq1j_TsEY", "9f5iUsFWqoo", "0SXIhVupLZY", "3gAJpHP3yg4", "8zlnEbQgP74", "EnTFdexbFrM", "P3AU8vUwvAs", "4dQvS_n0uy4", "T5CRSwoP5_w", "cd8IcmBLpXc", "L4nAcT3QYkA", "5gskEcRE1uo", "1xywnh3DqFQ", "fXeqjU4tHqo", "YBMxdPCG_PY", "GB5_4JUB9hc", "EtAUdnvt0kc", "y-5D2HhLbso", "q8kP0pRFRMc", "8mQkTPoWfPo", "U5I92UivGzU", "UoMTKhqTf1U", "oIvzxlDViTo", "kCnh99-yZIs", "orABz0cfQZY", "VKt2PXkavyU", "kYwyB7o7BJs", "UB1FC4Nim1Y", "kN_eMzoJJmA", "4hdpejFLkPc", "ArSlY77uV1w", "2me_AlMFJh8", "OlKsICCPadE", "SjpJZ66rGaU", "iRZp_9irH2g", "CN9qeuO04A4", "BUnuun2sL-8", "XSIfSz3ZEGc", "hW5pHqeC1t4", "_cJV_l9tlaU", "ChT4bsCpwcU", ...] 13:29:18.599 [debug] QUERY OK source="media_items" db=4.3ms idle=462.0ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [20] 13:29:18.601 [debug] QUERY OK source="tasks" db=0.3ms idle=466.8ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [202986, 20, ~U[2026-01-03 02:29:18Z], ~U[2026-01-03 02:29:18Z]] 13:29:18.602 [info] {"args":{"id":20},"id":202961,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":470331,"event":"job:stop","queue_time":594543,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 13:29:21.140 [info] {"args":{"id":21},"id":202962,"meta":{},"system_time":1767407361140545100,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 13:29:21.141 [debug] QUERY OK source="sources" db=0.7ms idle=878.9ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [21] 13:29:21.142 [debug] QUERY OK source="settings" db=0.3ms idle=879.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:29:21.143 [debug] QUERY OK source="media_profiles" db=0.5ms idle=880.4ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:29:21.143 [debug] QUERY OK source="settings" db=0.4ms idle=10.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:29:21.143 [debug] Fetching recent media IDs from YouTube API for playlist: UU2-i3KuYoODXsM99Z3-Gm0A 13:29:21.144 [debug] QUERY OK source="settings" db=0.3ms idle=3.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:29:21.144 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 13:29:21.676 [debug] QUERY OK source="media_items" db=4.8ms idle=530.0ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND m0."media_id" IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [21, "J5rMffRWoaE", "SpNjg65s29I", "8YoFYb6ahAc", "2z0gjjea0mQ", "2d3dU0R4Sk4", "_TFHZ9W3Jt8", "dqjpFcJG5Cc", "Pm0PXgXMNVY", "YXwzRiYgHHc", "mUK6UT_7PZo", "nE49QFWymsI", "WY4rfxfFsVA", "LHyVvVpA0xM", "HYIwk4qL2os", "RZBQe4RLdZ8", "DN5ES5PlK6c", "OaO4UInG53A", "UqcJk1mPcnQ", "NqSJZesKtFs", "3bsFFOwsQzA", "EaXJ1rQ2v5k", "jnV5Ptgg1Xc", "rXghFt-g_OM", "Y_MU28GV-M0", "OZ1fXb4gcv0", "t7JeRNvBG40", "XG41sdzNz7I", "rQFtIiVV7RA", "TviKrv1FTzc", "0iH3eN6DUbM", "AjzhbnNiJO0", "3Y2fdnw7AwM", "8Z_XpRjS2oo", "RY1Nnw_qOGc", "pUB0TU9UQhI", "eVR3mgSxjUk", "5hGYObRZMPQ", "4MemHNHi_YE", "yM6u1-_JNXo", "VGLq2Tjokl4", "XpV4r2KB0UA", "cvrpvL1kO_8", "Q4kS9l81A0k", "Mq47ro7Pc00", "GAu1Y-5EPeM", "dNIc1vTlbDc", "S1zqKNfggRQ", "zquTrv6kv-U", "-H6sKLcAL9I", ...] 13:29:21.687 [debug] QUERY OK source="media_items" db=8.5ms idle=536.4ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [21] 13:29:21.691 [debug] QUERY OK source="tasks" db=0.9ms idle=546.2ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [202987, 21, ~U[2026-01-03 02:29:21Z], ~U[2026-01-03 02:29:21Z]] 13:29:21.692 [info] {"args":{"id":21},"id":202962,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":551162,"event":"job:stop","queue_time":679988,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 13:29:42.689 [info] {"source":"oban","duration":4231,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:29:50.794 [info] GET /sources/23/media/21387/force_download 13:29:50.796 [debug] QUERY OK source="settings" db=0.7ms queue=0.1ms idle=1533.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:29:50.797 [debug] QUERY OK source="settings" db=0.7ms queue=0.1ms idle=1534.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:29:50.797 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 13:29:50.798 [error] #PID<0.10356.0> running PinchflatWeb.Endpoint (connection #PID<0.10355.0>, stream id 1) terminated Server: pinchflat.uiau7e.uncld.dev:80 (http) Request: GET /sources/23/media/21387/force_download ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/23/media/21387/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.10355.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/23/media/21387/force_download", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 34364}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "from" => "gptbot(at)openai.com", "host" => "pinchflat.uiau7e.uncld.dev", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.3; +https://openai.com/gptbot)", "via" => "2.0 Caddy", "x-forwarded-for" => "74.7.227.183", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https", "x-openai-host-hash" => "454925582" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.uiau7e.uncld.dev", method: "GET", owner: #PID<0.10356.0>, params: %{}, path_info: ["sources", "23", "media", "21387", "force_download"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.uiau7e.uncld.dev", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {10, 210, 0, 2}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"accept-encoding", "gzip, br, deflate"}, {"from", "gptbot(at)openai.com"}, {"host", "pinchflat.uiau7e.uncld.dev"}, {"user-agent", "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.3; +https://openai.com/gptbot)"}, {"via", "2.0 Caddy"}, {"x-forwarded-for", "74.7.227.183"}, {"x-forwarded-host", "pinchflat.uiau7e.uncld.dev"}, {"x-forwarded-proto", "https"}, {"x-openai-host-hash", "454925582"} ], request_path: "/sources/23/media/21387/force_download", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GIcXqGW7NW1vFfgAAeIB"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.10355.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/23/media/21387/force_download", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 34364}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "from" => "gptbot(at)openai.com", "host" => "pinchflat.uiau7e.uncld.dev", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.3; +https://openai.com/gptbot)", "via" => "2.0 Caddy", "x-forwarded-for" => "74.7.227.183", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https", "x-openai-host-hash" => "454925582" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/23/media/21387/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.10355.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/23/media/21387/force_download", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 34364}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "from" => "gptbot(at)openai.com", "host" => "pinchflat.uiau7e.uncld.dev", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.3; +https://openai.com/gptbot)", "via" => "2.0 Caddy", "x-forwarded-for" => "74.7.227.183", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https", "x-openai-host-hash" => "454925582" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.uiau7e.uncld.dev", method: "GET", owner: #PID<0.10356.0>, params: %{}, path_info: ["sources", "23", "media", "21387", "force_download"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.uiau7e.uncld.dev", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {10, 210, 0, 2}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"accept-en (truncated) 13:30:00.157 [info] {"source":"oban","duration":570,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 13:30:12.691 [info] {"source":"oban","duration":1901,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:30:13.112 [info] GET /sources/16/media/58881/force_download 13:30:13.113 [debug] QUERY OK source="settings" db=0.6ms idle=1850.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:30:13.114 [debug] QUERY OK source="settings" db=0.4ms idle=1833.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:30:13.114 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 13:30:13.114 [error] #PID<0.10358.0> running PinchflatWeb.Endpoint (connection #PID<0.10357.0>, stream id 1) terminated Server: pinchflat.uiau7e.uncld.dev:80 (http) Request: GET /sources/16/media/58881/force_download ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/16/media/58881/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.10357.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/16/media/58881/force_download", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 35152}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, zstd, deflate", "host" => "pinchflat.uiau7e.uncld.dev", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)", "via" => "2.0 Caddy", "x-forwarded-for" => "216.73.216.126", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.uiau7e.uncld.dev", method: "GET", owner: #PID<0.10358.0>, params: %{}, path_info: ["sources", "16", "media", "58881", "force_download"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.uiau7e.uncld.dev", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {10, 210, 0, 2}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"accept-encoding", "gzip, br, zstd, deflate"}, {"host", "pinchflat.uiau7e.uncld.dev"}, {"user-agent", "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)"}, {"via", "2.0 Caddy"}, {"x-forwarded-for", "216.73.216.126"}, {"x-forwarded-host", "pinchflat.uiau7e.uncld.dev"}, {"x-forwarded-proto", "https"} ], request_path: "/sources/16/media/58881/force_download", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GIcXrZfyUeSVdrEAAeIh"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.10357.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/16/media/58881/force_download", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 35152}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, zstd, deflate", "host" => "pinchflat.uiau7e.uncld.dev", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)", "via" => "2.0 Caddy", "x-forwarded-for" => "216.73.216.126", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/16/media/58881/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.10357.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/16/media/58881/force_download", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 35152}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, zstd, deflate", "host" => "pinchflat.uiau7e.uncld.dev", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)", "via" => "2.0 Caddy", "x-forwarded-for" => "216.73.216.126", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.uiau7e.uncld.dev", method: "GET", owner: #PID<0.10358.0>, params: %{}, path_info: ["sources", "16", "media", "58881", "force_download"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.uiau7e.uncld.dev", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {10, 210, 0, 2}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"accept-encoding", "gzip, br, zstd, deflate"}, {"host", "pinchflat.uiau7e.uncld.dev"}, {"user-agent", "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)"}, {"via", "2.0 Caddy"}, {"x-forwarded-for", "216.73.216.126"}, (truncated) 13:30:42.696 [info] {"source":"oban","duration":4036,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:30:55.515 [info] GET /sources/23/media/21394/force_download 13:30:55.517 [debug] QUERY OK source="settings" db=0.9ms queue=0.1ms idle=1254.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:30:55.518 [debug] QUERY OK source="settings" db=0.4ms queue=0.1ms idle=1255.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:30:55.518 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 13:30:55.518 [error] #PID<0.10365.0> running PinchflatWeb.Endpoint (connection #PID<0.10364.0>, stream id 1) terminated Server: pinchflat.uiau7e.uncld.dev:80 (http) Request: GET /sources/23/media/21394/force_download ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/23/media/21394/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.10364.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/23/media/21394/force_download", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 44808}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "from" => "gptbot(at)openai.com", "host" => "pinchflat.uiau7e.uncld.dev", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.3; +https://openai.com/gptbot)", "via" => "2.0 Caddy", "x-forwarded-for" => "74.7.227.183", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https", "x-openai-host-hash" => "454925582" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.uiau7e.uncld.dev", method: "GET", owner: #PID<0.10365.0>, params: %{}, path_info: ["sources", "23", "media", "21394", "force_download"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.uiau7e.uncld.dev", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {10, 210, 0, 2}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"accept-encoding", "gzip, br, deflate"}, {"from", "gptbot(at)openai.com"}, {"host", "pinchflat.uiau7e.uncld.dev"}, {"user-agent", "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.3; +https://openai.com/gptbot)"}, {"via", "2.0 Caddy"}, {"x-forwarded-for", "74.7.227.183"}, {"x-forwarded-host", "pinchflat.uiau7e.uncld.dev"}, {"x-forwarded-proto", "https"}, {"x-openai-host-hash", "454925582"} ], request_path: "/sources/23/media/21394/force_download", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GIcXt3dinDVRfeoAAeKB"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.10364.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/23/media/21394/force_download", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 44808}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "from" => "gptbot(at)openai.com", "host" => "pinchflat.uiau7e.uncld.dev", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.3; +https://openai.com/gptbot)", "via" => "2.0 Caddy", "x-forwarded-for" => "74.7.227.183", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https", "x-openai-host-hash" => "454925582" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/23/media/21394/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.10364.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/23/media/21394/force_download", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 44808}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "from" => "gptbot(at)openai.com", "host" => "pinchflat.uiau7e.uncld.dev", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.3; +https://openai.com/gptbot)", "via" => "2.0 Caddy", "x-forwarded-for" => "74.7.227.183", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https", "x-openai-host-hash" => "454925582" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.uiau7e.uncld.dev", method: "GET", owner: #PID<0.10365.0>, params: %{}, path_info: ["sources", "23", "media", "21394", "force_download"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.uiau7e.uncld.dev", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {10, 210, 0, 2}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"accept-en (truncated) 13:31:00.158 [info] {"source":"oban","duration":448,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 13:31:12.699 [info] {"source":"oban","duration":1648,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:31:42.701 [info] {"source":"oban","duration":1987,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:31:59.872 [info] GET /sources/11/media/54288/force_download 13:31:59.873 [debug] QUERY OK source="settings" db=0.5ms queue=0.1ms idle=1610.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:31:59.874 [debug] QUERY OK source="settings" db=0.5ms queue=0.2ms idle=1611.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:31:59.875 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 13:31:59.876 [error] #PID<0.10371.0> running PinchflatWeb.Endpoint (connection #PID<0.10370.0>, stream id 1) terminated Server: pinchflat.uiau7e.uncld.dev:80 (http) Request: GET /sources/11/media/54288/force_download ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/11/media/54288/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.10370.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/11/media/54288/force_download", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 59196}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "from" => "gptbot(at)openai.com", "host" => "pinchflat.uiau7e.uncld.dev", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.3; +https://openai.com/gptbot)", "via" => "2.0 Caddy", "x-forwarded-for" => "74.7.227.183", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https", "x-openai-host-hash" => "454925582" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.uiau7e.uncld.dev", method: "GET", owner: #PID<0.10371.0>, params: %{}, path_info: ["sources", "11", "media", "54288", "force_download"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.uiau7e.uncld.dev", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {10, 210, 0, 2}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"accept-encoding", "gzip, br, deflate"}, {"from", "gptbot(at)openai.com"}, {"host", "pinchflat.uiau7e.uncld.dev"}, {"user-agent", "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.3; +https://openai.com/gptbot)"}, {"via", "2.0 Caddy"}, {"x-forwarded-for", "74.7.227.183"}, {"x-forwarded-host", "pinchflat.uiau7e.uncld.dev"}, {"x-forwarded-proto", "https"}, {"x-openai-host-hash", "454925582"} ], request_path: "/sources/11/media/54288/force_download", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GIcXxnNTtixbO5MAAeLh"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.10370.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/11/media/54288/force_download", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 59196}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "from" => "gptbot(at)openai.com", "host" => "pinchflat.uiau7e.uncld.dev", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.3; +https://openai.com/gptbot)", "via" => "2.0 Caddy", "x-forwarded-for" => "74.7.227.183", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https", "x-openai-host-hash" => "454925582" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/11/media/54288/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.10370.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/11/media/54288/force_download", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 59196}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "from" => "gptbot(at)openai.com", "host" => "pinchflat.uiau7e.uncld.dev", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.3; +https://openai.com/gptbot)", "via" => "2.0 Caddy", "x-forwarded-for" => "74.7.227.183", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https", "x-openai-host-hash" => "454925582" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.uiau7e.uncld.dev", method: "GET", owner: #PID<0.10371.0>, params: %{}, path_info: ["sources", "11", "media", "54288", "force_download"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.uiau7e.uncld.dev", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {10, 210, 0, 2}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"accept-en (truncated) 13:32:00.159 [info] {"source":"oban","duration":523,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 13:32:12.705 [info] {"source":"oban","duration":2854,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:32:14.710 [info] {"args":{"id":19},"id":202964,"meta":{},"system_time":1767407534710591384,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 13:32:14.712 [debug] QUERY OK source="sources" db=1.0ms idle=1449.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [19] 13:32:14.713 [debug] QUERY OK source="settings" db=0.6ms idle=1013.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:32:14.714 [debug] QUERY OK source="media_profiles" db=0.7ms idle=451.4ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:32:14.715 [debug] QUERY OK source="settings" db=0.6ms idle=11.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:32:14.715 [debug] Fetching recent media IDs from YouTube API for playlist: UUaYhH3F6iB3KyW3afTHk5XA 13:32:14.715 [debug] QUERY OK source="settings" db=0.4ms idle=4.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:32:14.716 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 13:32:15.259 [debug] QUERY OK source="media_items" db=2.0ms idle=545.2ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND m0."media_id" IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [19, "mUlKcxGWvrQ", "ydfuNK4wSik", "x6cNQykYdEM", "SvyVS7zvquc", "l4O2F-1BWVI", "LYXADYUSTSg", "HpL40FdPGqk", "Wre5VWHxSug", "PdUu77SAH0I", "VCflrtok9hQ", "haEa6h8Ptf0", "c_-f7G9VSPw", "7rSLcNznix4", "OLXr-B-xwY8", "X05FPJq6_Oc", "kuL-trgOvq8", "WpBEifN8BYw", "YETks_YtraY", "bwKKd4N8Q2E", "PpNfOqbt0a8", "GyifuiQ6p48", "SkoFBCBASto", "-GNid2M6IC8", "muehDmLuJSw", "nBx5yssxPDk", "Q6vzDo6it9o", "AH9Z6_PlKhA", "dZfthyLyjDk", "j9UuSMaqX9Q", "jmoVFLUvyD0", "tKm_pnNEDsc", "boVAiizeh1M", "FNtBH6k7Jmo", "MDhN5WGOJ_o", "P-UQX5L_Ff0", "kys3lRzOOEY", "VDHSC2Dl8f0", "JU0uEdyPKlE", "0sSWAzq7rjc", "HOLXNrjWeuo"] 13:32:15.263 [debug] QUERY OK source="media_items" db=1.0ms idle=549.1ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [19] 13:32:15.268 [debug] QUERY OK source="tasks" db=1.0ms idle=551.4ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [202988, 19, ~U[2026-01-03 02:32:15Z], ~U[2026-01-03 02:32:15Z]] 13:32:15.269 [info] {"args":{"id":19},"id":202964,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":557947,"event":"job:stop","queue_time":596641,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 13:32:15.715 [info] {"args":{"id":23},"id":202965,"meta":{},"system_time":1767407535715336005,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 13:32:15.716 [debug] QUERY OK source="sources" db=1.0ms idle=447.2ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [23] 13:32:15.718 [debug] QUERY OK source="settings" db=0.6ms queue=0.1ms idle=447.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:32:15.719 [debug] QUERY OK source="media_profiles" db=0.8ms queue=0.1ms idle=440.2ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:32:15.720 [debug] QUERY OK source="settings" db=0.6ms queue=0.1ms idle=12.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:32:15.720 [debug] Fetching recent media IDs from YouTube API for playlist: UUSHvlfXUGYGWmDBg-afA5Bg 13:32:15.721 [debug] QUERY OK source="settings" db=0.3ms queue=0.2ms idle=5.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:32:15.722 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 13:32:16.051 [debug] QUERY OK source="media_items" db=1.9ms queue=0.1ms idle=332.5ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND m0."media_id" IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [23, "QASZbKPkS08", "pr7MMAFzHe8", "DG0BSdc6kKg", "o7DJZCU8q34", "G5A2QGwRmS4", "PER4GK9LCTA", "GzIS1WZFKtc", "24P4MFV-HrM", "6x6df3uagb4", "vALU9LhFKhE", "KF1grNBv5hU", "SLSPmp8-tXE", "53liPfHBgYQ", "zykmoM0qjbA", "boyfPk5qdBM", "H2VYuo7yb2o", "75_mYLpHDr4", "PSnlGB9aKVI", "vFBFSi2XqrQ", "X2z1ugOwR2A", "ePV6FKD1J9U", "ipxj_tl_6XY", "6l9-ctzSbCo", "xu3DTyCW3Yk", "wpAt0QaSk7U", "NXy9Sg0KIMY", "ml5AG_Q0y6w", "h_Uq6-e06y8", "37_rLteuwG4", "QCbf0kOJ8lA"] 13:32:16.056 [debug] QUERY OK source="media_items" db=0.8ms idle=337.4ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [23] 13:32:16.060 [debug] QUERY OK source="tasks" db=0.4ms idle=338.0ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [202989, 23, ~U[2026-01-03 02:32:16Z], ~U[2026-01-03 02:32:16Z]] 13:32:16.089 [info] {"args":{"id":23},"id":202965,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":345118,"event":"job:stop","queue_time":803346,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 13:32:16.722 [info] {"args":{"id":25},"id":202966,"meta":{},"system_time":1767407536722405327,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 13:32:16.724 [debug] QUERY OK source="sources" db=1.0ms queue=0.2ms idle=662.8ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [25] 13:32:16.726 [debug] QUERY OK source="settings" db=0.9ms queue=0.1ms idle=635.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:32:16.727 [debug] QUERY OK source="media_profiles" db=0.7ms idle=627.6ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:32:16.728 [debug] QUERY OK source="settings" db=0.7ms queue=0.1ms idle=11.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:32:16.728 [debug] Fetching recent media IDs from YouTube API for playlist: UUWstkeBSSIEgw6n5qnlXXuA 13:32:16.729 [debug] QUERY OK source="settings" db=0.5ms idle=6.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:32:16.729 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 13:32:17.068 [debug] QUERY OK source="media_items" db=1.8ms idle=341.5ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND m0."media_id" IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [25, "_sYSZI--9TA", "T7P86y4vYKs", "qWpf9ysgE04", "81v7r86tRRE", "a3LYS6jzPKA", "o5UKHwwdhmA", "6CCxzLKCHYA", "VONzFNo8uW4", "jJUysp-6qBs", "3KzmAquL3e4", "5cgK_MdFz7s", "bHpsXfutTFY", "kVhFNQj86Ng", "nyd40ZDhRw4"] 13:32:17.071 [debug] QUERY OK source="media_items" db=1.6ms queue=0.1ms idle=343.7ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [25] 13:32:17.078 [debug] QUERY OK source="tasks" db=1.0ms idle=347.5ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [202990, 25, ~U[2026-01-03 02:32:17Z], ~U[2026-01-03 02:32:17Z]] 13:32:17.080 [info] {"args":{"id":25},"id":202966,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":356227,"event":"job:stop","queue_time":780252,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 13:32:17.727 [info] {"args":{"id":17},"id":202967,"meta":{},"system_time":1767407537727381755,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 13:32:17.729 [debug] QUERY OK source="sources" db=0.8ms queue=0.1ms idle=649.7ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [17] 13:32:17.730 [debug] QUERY OK source="settings" db=0.5ms queue=0.1ms idle=649.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:32:17.731 [debug] QUERY OK source="media_profiles" db=0.5ms queue=0.1ms idle=643.1ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:32:17.732 [debug] QUERY OK source="settings" db=0.5ms queue=0.1ms idle=11.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:32:17.732 [debug] Fetching recent media IDs from YouTube API for playlist: UUEIwxahdLz7bap-VDs9h35A 13:32:17.733 [debug] QUERY OK source="settings" db=0.2ms queue=0.1ms idle=5.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:32:17.733 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 13:32:18.089 [debug] QUERY OK source="media_items" db=5.5ms idle=354.3ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND m0."media_id" IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [17, "kuMUquaeE6g", "-NzfTE8RI4w", "2eiYALLYBFE", "J_vXK9uvRf4", "tRDxBwverlI", "ymlNErMdI2k", "hM1l19H0tX8", "qg01MgiVT9k", "a3l6FdpltbQ", "NtZaP8VMv0c", "ayicYezINas", "zoTuSOEOvPw", "U7NHNT3M-tw", "B_PCZiNlmPw", "5glksNTKkZI", "iDsb-pxE3fA", "7PJi9KSDVbQ", "CfhsW1kaa2Q", "pleHURTV6fU", "T47s4L1Wje4", "LLlghvxVoH0", "K4542wtX8B4", "rf-efIZI_Dg", "OXvdwc6NDqM", "nGEHUbTtpPY", "0FybegjTkgw", "3TgdCWBV0pg", "Qjd4CREfYbo", "pqnyUemUDF4", "6-FQSEVc_cs", "BvoDuNZ9gLA", "AjJfefo41M8", "dJSGJ1-9XWw", "Mcg9GcilBfU", "MQSwyrjTV2M", "o-dZKBwbsis", "matUCqoiSGk", "0_VdGzEk5-M", "PAOpkv0fpik", "VdwSMytC7y4", "tw5tQPm-B00", "vkD3-msLIHg", "INq7pAmaUuk", "mfTVxFapdLw", "kY2YeM5fNDw", "lkWRiks6luc", "yiCM_i8r4RM", "XzBMFsZT5gM", "dKN6XatdVkY", ...] 13:32:18.099 [debug] QUERY OK source="media_items" db=5.6ms idle=363.1ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [17] 13:32:18.104 [debug] QUERY OK source="tasks" db=0.7ms idle=370.3ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [202991, 17, ~U[2026-01-03 02:32:18Z], ~U[2026-01-03 02:32:18Z]] 13:32:18.105 [info] {"args":{"id":17},"id":202967,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":377213,"event":"job:stop","queue_time":801407,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 13:32:42.708 [info] {"source":"oban","duration":1733,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:32:46.862 [info] GET /sources/7 13:32:46.862 [info] GET /sources/5 13:32:46.862 [debug] Processing with PinchflatWeb.Sources.SourceController.show/2 Parameters: %{"id" => "7"} Pipelines: [:browser] 13:32:46.863 [debug] Processing with PinchflatWeb.Sources.SourceController.show/2 Parameters: %{"id" => "5"} Pipelines: [:browser] 13:32:46.866 [debug] QUERY OK source="sources" db=2.9ms idle=1601.4ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [7] 13:32:46.866 [debug] QUERY OK source="sources" db=3.0ms queue=0.1ms idle=1601.4ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [5] 13:32:46.868 [debug] QUERY OK source="media_profiles" db=1.9ms idle=1053.0ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:32:46.869 [debug] QUERY OK source="media_profiles" db=1.8ms idle=605.0ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:32:46.870 [debug] QUERY OK source="tasks" db=0.8ms queue=0.1ms idle=3.0ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at" FROM "tasks" AS t0 INNER JOIN "oban_jobs" AS o1 ON o1."id" = t0."job_id" WHERE (t0."source_id" = ?) AND (o1."state" IN (?,?,?,?)) [5, "executing", "available", "scheduled", "retryable"] 13:32:46.871 [debug] QUERY OK source="tasks" db=1.8ms idle=52.2ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at" FROM "tasks" AS t0 INNER JOIN "oban_jobs" AS o1 ON o1."id" = t0."job_id" WHERE (t0."source_id" = ?) AND (o1."state" IN (?,?,?,?)) [7, "executing", "available", "scheduled", "retryable"] 13:32:46.872 [debug] QUERY OK source="oban_jobs" db=0.9ms queue=0.1ms idle=4.3ms SELECT o0."id", o0."state", o0."queue", o0."worker", o0."args", o0."meta", o0."tags", o0."errors", o0."attempt", o0."attempted_by", o0."max_attempts", o0."priority", o0."attempted_at", o0."cancelled_at", o0."completed_at", o0."discarded_at", o0."inserted_at", o0."scheduled_at", o0."id" FROM "oban_jobs" AS o0 WHERE (o0."id" = ?) [202963] 13:32:46.872 [debug] QUERY OK source="oban_jobs" db=0.6ms idle=2.7ms SELECT o0."id", o0."state", o0."queue", o0."worker", o0."args", o0."meta", o0."tags", o0."errors", o0."attempt", o0."attempted_by", o0."max_attempts", o0."priority", o0."attempted_at", o0."cancelled_at", o0."completed_at", o0."discarded_at", o0."inserted_at", o0."scheduled_at", o0."id" FROM "oban_jobs" AS o0 WHERE (o0."id" IN (?,?)) [202972, 202154] 13:32:46.873 [debug] QUERY OK source="settings" db=0.7ms queue=0.1ms idle=3.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:32:46.873 [debug] QUERY OK source="settings" db=0.8ms queue=0.1ms idle=2.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:32:46.874 [debug] QUERY OK source="settings" db=0.5ms queue=0.1ms idle=2.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:32:46.875 [debug] QUERY OK source="settings" db=1.1ms queue=0.1ms idle=2.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:32:46.876 [debug] QUERY OK source="settings" db=0.4ms queue=0.6ms idle=2.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:32:46.876 [debug] QUERY OK source="settings" db=0.3ms idle=2.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:32:46.878 [debug] QUERY OK source="sources" db=0.5ms idle=4.3ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [7] 13:32:46.879 [debug] QUERY OK source="sources" db=0.2ms idle=4.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [5] 13:32:46.884 [debug] QUERY OK source="media_items" db=5.0ms idle=4.6ms SELECT count(m0."id") FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [7] 13:32:46.889 [debug] QUERY OK source="media_items" db=4.8ms queue=0.1ms idle=8.2ms SELECT m0."id", m0."title", m0."uploaded_at", m0."prevent_download", m0."last_error" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) ORDER BY m0."uploaded_at" DESC LIMIT ? OFFSET ? [7, 10, 0] 13:32:46.890 [debug] QUERY OK source="media_items" db=10.0ms idle=3.8ms SELECT count(m0."id") FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [5] 13:32:46.892 [debug] QUERY OK source="sources" db=0.6ms queue=0.1ms idle=12.3ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [7] 13:32:46.897 [debug] QUERY OK source="media_items" db=4.0ms idle=9.1ms SELECT count(m0."id") FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND NOT (m0."media_filepath" IS NULL)) [7] 13:32:46.899 [debug] QUERY OK source="media_items" db=8.3ms queue=0.1ms idle=12.0ms SELECT m0."id", m0."title", m0."uploaded_at", m0."prevent_download", m0."last_error" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) ORDER BY m0."uploaded_at" DESC LIMIT ? OFFSET ? [5, 10, 0] 13:32:46.901 [debug] QUERY OK source="media_items" db=3.4ms queue=0.1ms idle=7.9ms SELECT m0."id", m0."title", m0."uploaded_at", m0."prevent_download", m0."last_error" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND NOT (m0."media_filepath" IS NULL)) ORDER BY m0."uploaded_at" DESC LIMIT ? OFFSET ? [7, 10, 0] 13:32:46.902 [debug] QUERY OK source="sources" db=0.4ms queue=0.7ms idle=10.7ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [5] 13:32:46.903 [debug] QUERY OK source="sources" db=0.2ms idle=5.5ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [7] 13:32:46.903 [debug] QUERY OK source="media_items" db=0.8ms idle=9.7ms SELECT count(m0."id") FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND NOT (m0."media_filepath" IS NULL)) [5] 13:32:46.911 [debug] QUERY OK source="media_items" db=8.1ms idle=4.0ms SELECT count(m0."id") FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds"))))) [7] 13:32:46.917 [debug] QUERY OK source="media_items" db=13.8ms idle=2.5ms SELECT m0."id", m0."title", m0."uploaded_at", m0."prevent_download", m0."last_error" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND NOT (m0."media_filepath" IS NULL)) ORDER BY m0."uploaded_at" DESC LIMIT ? OFFSET ? [5, 10, 0] 13:32:46.919 [debug] QUERY OK source="sources" db=0.7ms idle=15.9ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [5] 13:32:46.921 [debug] QUERY OK source="media_items" db=9.6ms idle=9.9ms SELECT m0."id", m0."title", m0."uploaded_at", m0."prevent_download", m0."last_error" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds"))))) ORDER BY m0."uploaded_at" DESC LIMIT ? OFFSET ? [7, 10, 0] 13:32:46.938 [debug] QUERY OK source="media_items" db=18.0ms idle=16.8ms SELECT count(m0."id") FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds"))))) [5] 13:32:46.940 [info] Sent 200 in 77ms 13:32:46.945 [debug] QUERY OK source="media_items" db=6.2ms idle=27.4ms SELECT m0."id", m0."title", m0."uploaded_at", m0."prevent_download", m0."last_error" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds"))))) ORDER BY m0."uploaded_at" DESC LIMIT ? OFFSET ? [5, 10, 0] 13:32:46.948 [info] Sent 200 in 85ms 13:33:00.162 [info] {"source":"oban","duration":785,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 13:33:02.464 [info] GET /sources/11/media/58580/force_download 13:33:02.466 [debug] QUERY OK source="settings" db=0.7ms queue=0.2ms idle=1203.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:33:02.468 [debug] QUERY OK source="settings" db=0.6ms queue=0.2ms idle=588.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:33:02.468 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 13:33:02.470 [error] #PID<0.10391.0> running PinchflatWeb.Endpoint (connection #PID<0.10390.0>, stream id 1) terminated Server: pinchflat.uiau7e.uncld.dev:80 (http) Request: GET /sources/11/media/58580/force_download ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/11/media/58580/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.10390.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/11/media/58580/force_download", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 40946}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "from" => "gptbot(at)openai.com", "host" => "pinchflat.uiau7e.uncld.dev", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.3; +https://openai.com/gptbot)", "via" => "2.0 Caddy", "x-forwarded-for" => "74.7.227.183", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https", "x-openai-host-hash" => "454925582" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.uiau7e.uncld.dev", method: "GET", owner: #PID<0.10391.0>, params: %{}, path_info: ["sources", "11", "media", "58580", "force_download"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.uiau7e.uncld.dev", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {10, 210, 0, 2}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"accept-encoding", "gzip, br, deflate"}, {"from", "gptbot(at)openai.com"}, {"host", "pinchflat.uiau7e.uncld.dev"}, {"user-agent", "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.3; +https://openai.com/gptbot)"}, {"via", "2.0 Caddy"}, {"x-forwarded-for", "74.7.227.183"}, {"x-forwarded-host", "pinchflat.uiau7e.uncld.dev"}, {"x-forwarded-proto", "https"}, {"x-openai-host-hash", "454925582"} ], request_path: "/sources/11/media/58580/force_download", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GIcX1QYj-vlWe2YAAeVB"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.10390.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/11/media/58580/force_download", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 40946}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "from" => "gptbot(at)openai.com", "host" => "pinchflat.uiau7e.uncld.dev", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.3; +https://openai.com/gptbot)", "via" => "2.0 Caddy", "x-forwarded-for" => "74.7.227.183", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https", "x-openai-host-hash" => "454925582" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/11/media/58580/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.10390.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/11/media/58580/force_download", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 40946}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "from" => "gptbot(at)openai.com", "host" => "pinchflat.uiau7e.uncld.dev", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.3; +https://openai.com/gptbot)", "via" => "2.0 Caddy", "x-forwarded-for" => "74.7.227.183", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https", "x-openai-host-hash" => "454925582" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.uiau7e.uncld.dev", method: "GET", owner: #PID<0.10391.0>, params: %{}, path_info: ["sources", "11", "media", "58580", "force_download"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.uiau7e.uncld.dev", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {10, 210, 0, 2}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"accept-en (truncated) 13:33:04.497 [info] GET /sources/24 13:33:04.497 [debug] Processing with PinchflatWeb.Sources.SourceController.show/2 Parameters: %{"id" => "24"} Pipelines: [:browser] 13:33:04.500 [debug] QUERY OK source="sources" db=1.4ms queue=0.2ms idle=610.8ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [24] 13:33:04.501 [debug] QUERY OK source="media_profiles" db=1.0ms queue=0.1ms idle=238.5ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:33:04.503 [info] GET /sources/1 13:33:04.503 [debug] Processing with PinchflatWeb.Sources.SourceController.show/2 Parameters: %{"id" => "1"} Pipelines: [:browser] 13:33:04.505 [debug] QUERY OK source="sources" db=1.1ms idle=241.4ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 13:33:04.505 [debug] QUERY OK source="tasks" db=3.1ms queue=0.1ms idle=239.9ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at" FROM "tasks" AS t0 INNER JOIN "oban_jobs" AS o1 ON o1."id" = t0."job_id" WHERE (t0."source_id" = ?) AND (o1."state" IN (?,?,?,?)) [24, "executing", "available", "scheduled", "retryable"] 13:33:04.505 [debug] QUERY OK source="media_profiles" db=0.5ms idle=242.9ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:33:04.506 [debug] QUERY OK source="oban_jobs" db=0.8ms idle=5.2ms SELECT o0."id", o0."state", o0."queue", o0."worker", o0."args", o0."meta", o0."tags", o0."errors", o0."attempt", o0."attempted_by", o0."max_attempts", o0."priority", o0."attempted_at", o0."cancelled_at", o0."completed_at", o0."discarded_at", o0."inserted_at", o0."scheduled_at", o0."id" FROM "oban_jobs" AS o0 WHERE (o0."id" IN (?,?)) [202973, 202152] 13:33:04.507 [debug] QUERY OK source="tasks" db=0.9ms idle=4.4ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at" FROM "tasks" AS t0 INNER JOIN "oban_jobs" AS o1 ON o1."id" = t0."job_id" WHERE (t0."source_id" = ?) AND (o1."state" IN (?,?,?,?)) [1, "executing", "available", "scheduled", "retryable"] 13:33:04.507 [debug] QUERY OK source="settings" db=0.6ms idle=1.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:33:04.508 [debug] QUERY OK source="settings" db=0.4ms idle=1.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:33:04.508 [debug] QUERY OK source="oban_jobs" db=1.1ms idle=2.0ms SELECT o0."id", o0."state", o0."queue", o0."worker", o0."args", o0."meta", o0."tags", o0."errors", o0."attempt", o0."attempted_by", o0."max_attempts", o0."priority", o0."attempted_at", o0."cancelled_at", o0."completed_at", o0."discarded_at", o0."inserted_at", o0."scheduled_at", o0."id" FROM "oban_jobs" AS o0 WHERE (o0."id" IN (?,?)) [202976, 202162] 13:33:04.509 [debug] QUERY OK source="settings" db=0.2ms queue=0.3ms idle=2.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:33:04.509 [debug] QUERY OK source="settings" db=0.7ms idle=1.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:33:04.510 [debug] QUERY OK source="settings" db=0.3ms idle=2.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:33:04.511 [debug] QUERY OK source="settings" db=0.6ms idle=2.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:33:04.511 [debug] QUERY OK source="sources" db=0.9ms idle=2.3ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [24] 13:33:04.513 [debug] QUERY OK source="sources" db=1.0ms idle=2.9ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 13:33:04.514 [debug] QUERY OK source="media_items" db=2.0ms queue=0.1ms idle=2.9ms SELECT count(m0."id") FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [24] 13:33:04.517 [debug] QUERY OK source="media_items" db=2.9ms idle=3.2ms SELECT m0."id", m0."title", m0."uploaded_at", m0."prevent_download", m0."last_error" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) ORDER BY m0."uploaded_at" DESC LIMIT ? OFFSET ? [24, 10, 0] 13:33:04.518 [debug] QUERY OK source="sources" db=0.3ms idle=6.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [24] 13:33:04.518 [debug] QUERY OK source="media_items" db=0.1ms idle=4.7ms SELECT count(m0."id") FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND NOT (m0."media_filepath" IS NULL)) [24] 13:33:04.519 [debug] QUERY OK source="media_items" db=0.4ms idle=4.5ms SELECT m0."id", m0."title", m0."uploaded_at", m0."prevent_download", m0."last_error" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND NOT (m0."media_filepath" IS NULL)) ORDER BY m0."uploaded_at" DESC LIMIT ? OFFSET ? [24, 10, 0] 13:33:04.520 [debug] QUERY OK source="media_items" db=6.4ms idle=3.8ms SELECT count(m0."id") FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [1] 13:33:04.521 [debug] QUERY OK source="sources" db=0.5ms idle=2.8ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [24] 13:33:04.522 [debug] QUERY OK source="media_items" db=0.8ms idle=3.3ms SELECT count(m0."id") FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds"))))) [24] 13:33:04.525 [debug] QUERY OK source="media_items" db=2.1ms idle=3.8ms SELECT m0."id", m0."title", m0."uploaded_at", m0."prevent_download", m0."last_error" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds"))))) ORDER BY m0."uploaded_at" DESC LIMIT ? OFFSET ? [24, 10, 0] 13:33:04.527 [debug] QUERY OK source="media_items" db=6.3ms queue=0.1ms idle=3.2ms SELECT m0."id", m0."title", m0."uploaded_at", m0."prevent_download", m0."last_error" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) ORDER BY m0."uploaded_at" DESC LIMIT ? OFFSET ? [1, 10, 0] 13:33:04.528 [debug] QUERY OK source="sources" db=0.6ms idle=7.1ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 13:33:04.528 [info] Sent 200 in 31ms 13:33:04.530 [debug] QUERY OK source="media_items" db=1.6ms idle=6.8ms SELECT count(m0."id") FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND NOT (m0."media_filepath" IS NULL)) [1] 13:33:04.534 [debug] QUERY OK source="media_items" db=3.7ms idle=7.5ms SELECT m0."id", m0."title", m0."uploaded_at", m0."prevent_download", m0."last_error" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND NOT (m0."media_filepath" IS NULL)) ORDER BY m0."uploaded_at" DESC LIMIT ? OFFSET ? [1, 10, 0] 13:33:04.535 [debug] QUERY OK source="sources" db=0.4ms idle=10.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 13:33:04.537 [debug] QUERY OK source="media_items" db=0.7ms idle=9.0ms SELECT count(m0."id") FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds"))))) [1] 13:33:04.539 [debug] QUERY OK source="media_items" db=0.9ms queue=0.1ms idle=9.5ms SELECT m0."id", m0."title", m0."uploaded_at", m0."prevent_download", m0."last_error" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds"))))) ORDER BY m0."uploaded_at" DESC LIMIT ? OFFSET ? [1, 10, 0] 13:33:04.543 [info] Sent 200 in 40ms 13:33:12.713 [info] {"source":"oban","duration":3398,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:33:42.716 [info] {"source":"oban","duration":2092,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:33:45.023 [info] {"args":{"id":7},"id":202972,"meta":{},"system_time":1767407625023256692,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 13:33:45.024 [debug] QUERY OK source="sources" db=0.9ms idle=762.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [7] 13:33:45.026 [debug] QUERY OK source="settings" db=1.1ms idle=763.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:33:45.027 [debug] QUERY OK source="media_profiles" db=1.1ms idle=764.5ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:33:45.029 [debug] QUERY OK source="settings" db=1.2ms idle=12.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:33:45.029 [debug] Fetching recent media IDs from YouTube API for playlist: UUwnKziETDbHJtx78nIkfYug 13:33:45.029 [debug] QUERY OK source="settings" db=0.2ms idle=6.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:33:45.029 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 13:33:45.396 [debug] QUERY OK source="media_items" db=3.6ms queue=0.1ms idle=367.0ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND m0."media_id" IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [7, "mC5NdpSMDks", "ccV3u3D9ONE", "cVCDjEfPzII", "n0X2rqzKTgM", "dcuCvRNqmpY", "GG1qX8jHKGo", "k9wkleHFvo0", "CWoYVlMuUNQ", "xlfeieH4z38", "eZM2Ik-FHEU", "CtcTG8-qzbA", "6Mmj7mf1qlg", "InwVO9qBjqs", "1Hp-W2bpPrw", "VtE5sTpkn7k", "8dOJypt2F70", "Evm4t4prtWo", "taLzgvbrnv0", "rgCrnyf5JEI", "PHhc-48JT3U", "vFKjpNNjNGw", "VJQlOI70ubw", "E5cfNq0DO90", "DNBGSsZatbY", "pna1NyaHTls", "CUHao-vA98g", "cPN9BJe_RQw", "rCBt4XgCX-0", "f4g6KKGMmEI", "P_I5Jsc3xRw", "fPaU2l7RktM", "0PVwt01b6fs", "0qMDM4Y4Hwo", "Ld285PDsHvs", "p1mQC71wplA", "9k5JhKK6WlA", "WPxrifmtlQI", "nVNBmK7a1y8", "QDnMYztaxfI", "gxsaWhXG1Gg", "RMtkKiyrXic", "JKlJ6OW67Bk", "Sjmb8O-fRWI", "qZhD4G7ENSY", "OTWDzMjgsEY", "Y_eCu_pW6-4", "DplgNsjOPRg", "l6hHI3AVoYM", "joAhvj7dfsc", ...] 13:33:45.405 [debug] QUERY OK source="media_items" db=4.0ms queue=0.1ms idle=374.9ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [7] 13:33:45.411 [debug] QUERY OK source="tasks" db=0.6ms idle=380.6ms INSERT INTO "tasks" ("job_id","media_item_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [202992, 8350, ~U[2026-01-03 02:33:45Z], ~U[2026-01-03 02:33:45Z]] 13:33:45.416 [debug] QUERY OK source="tasks" db=0.6ms queue=0.1ms idle=6.8ms INSERT INTO "tasks" ("job_id","media_item_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [202993, 8380, ~U[2026-01-03 02:33:45Z], ~U[2026-01-03 02:33:45Z]] 13:33:45.419 [info] {"args":{"id":8350},"id":202992,"meta":{},"system_time":1767407625418239006,"max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 13:33:45.420 [info] {"args":{"id":8380},"id":202993,"meta":{},"system_time":1767407625419331081,"max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 13:33:45.421 [debug] QUERY OK source="media_items" db=0.6ms queue=0.4ms idle=4.9ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [8350] 13:33:45.421 [info] User scripts lifecyle file either not present or is empty. Skipping. 13:33:45.421 [debug] QUERY OK source="media_items" db=0.9ms queue=0.1ms idle=4.5ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [8380] 13:33:45.422 [debug] QUERY OK source="tasks" db=1.0ms queue=0.2ms idle=3.3ms INSERT INTO "tasks" ("job_id","media_item_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [202994, 8401, ~U[2026-01-03 02:33:45Z], ~U[2026-01-03 02:33:45Z]] 13:33:45.422 [info] User scripts lifecyle file either not present or is empty. Skipping. 13:33:45.423 [debug] QUERY OK source="sources" db=1.2ms idle=2.4ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [7] 13:33:45.423 [debug] QUERY OK source="sources" db=0.8ms queue=0.1ms idle=1.9ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [7] 13:33:45.424 [debug] QUERY OK source="media_profiles" db=1.2ms queue=0.1ms idle=2.3ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:33:45.425 [debug] QUERY OK source="media_profiles" db=1.1ms idle=1.6ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:33:45.427 [debug] QUERY OK source="media_items" db=2.0ms queue=0.1ms idle=2.0ms SELECT 1 FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) LIMIT 1 [8350] 13:33:45.428 [debug] QUERY OK source="media_items" db=1.3ms idle=2.1ms SELECT 1 FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) LIMIT 1 [8380] 13:33:45.428 [debug] QUERY OK source="tasks" db=0.4ms idle=2.5ms INSERT INTO "tasks" ("job_id","media_item_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [202995, 8418, ~U[2026-01-03 02:33:45Z], ~U[2026-01-03 02:33:45Z]] 13:33:45.429 [debug] QUERY OK source="media_metadata" db=0.3ms idle=2.0ms SELECT m0."id", m0."metadata_filepath", m0."thumbnail_filepath", m0."media_item_id", m0."inserted_at", m0."updated_at", m0."media_item_id" FROM "media_metadata" AS m0 WHERE (m0."media_item_id" = ?) [8350] 13:33:45.431 [debug] QUERY OK source="media_profiles" db=0.6ms queue=0.2ms idle=1.8ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:33:45.431 [debug] QUERY OK source="media_metadata" db=0.6ms idle=2.1ms SELECT m0."id", m0."metadata_filepath", m0."thumbnail_filepath", m0."media_item_id", m0."inserted_at", m0."updated_at", m0."media_item_id" FROM "media_metadata" AS m0 WHERE (m0."media_item_id" = ?) [8380] 13:33:45.431 [debug] QUERY OK source="tasks" db=0.4ms queue=0.2ms idle=1.2ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [202996, 7, ~U[2026-01-03 02:33:45Z], ~U[2026-01-03 02:33:45Z]] 13:33:45.432 [debug] QUERY OK source="settings" db=0.3ms queue=0.1ms idle=0.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:33:45.432 [debug] QUERY OK source="settings" db=0.4ms idle=1.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:33:45.432 [info] {"args":{"id":7},"id":202972,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":408539,"event":"job:stop","queue_time":772305,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 13:33:45.433 [debug] QUERY OK source="media_profiles" db=1.1ms queue=0.3ms idle=1.6ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:33:45.433 [debug] Running yt-dlp command for action: get_downloadable_status 13:33:45.434 [debug] QUERY OK source="settings" db=0.2ms idle=2.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:33:45.435 [debug] QUERY OK source="settings" db=0.1ms idle=2.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:33:45.435 [debug] QUERY OK source="settings" db=0.1ms idle=2.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:33:45.435 [debug] QUERY OK source="settings" db=0.3ms idle=2.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:33:45.436 [debug] Running yt-dlp command for action: get_downloadable_status 13:33:45.436 [debug] QUERY OK source="settings" db=0.2ms queue=0.1ms idle=2.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:33:45.436 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=aCES82xfgdw --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/f5/d6/f5d68497699b20b43b59c2cda39fcaea6fd8d83a54cd5f7cc5ece0c7f40e5c11.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 13:33:45.437 [debug] QUERY OK source="settings" db=0.2ms idle=2.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:33:45.438 [debug] QUERY OK source="settings" db=0.3ms idle=2.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:33:45.438 [debug] QUERY OK source="settings" db=0.2ms idle=3.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:33:45.438 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=bhkmFO8DikY --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/42/3d/423dbfcf60e0854753e0ad69656db44ffe63b8d94bcae4c7435b2059fa7fdb7e.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 13:33:50.933 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=aCES82xfgdw --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/f5/d6/f5d68497699b20b43b59c2cda39fcaea6fd8d83a54cd5f7cc5ece0c7f40e5c11.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 1 with: ERROR: [youtube] aCES82xfgdw: Sign in to confirm your age. This video may be inappropriate for some users. Use --cookies-from-browser or --cookies for the authentication. See https://github.com/yt-dlp/yt-dlp/wiki/FAQ#how-do-i-pass-cookies-to-yt-dlp for how to manually pass cookies. Also see https://github.com/yt-dlp/yt-dlp/wiki/Extractors#exporting-youtube-cookies for tips on effectively exporting YouTube cookies 13:33:50.935 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=bhkmFO8DikY --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/42/3d/423dbfcf60e0854753e0ad69656db44ffe63b8d94bcae4c7435b2059fa7fdb7e.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 1 with: ERROR: [youtube] bhkmFO8DikY: Sign in to confirm your age. This video may be inappropriate for some users. Use --cookies-from-browser or --cookies for the authentication. See https://github.com/yt-dlp/yt-dlp/wiki/FAQ#how-do-i-pass-cookies-to-yt-dlp for how to manually pass cookies. Also see https://github.com/yt-dlp/yt-dlp/wiki/Extractors#exporting-youtube-cookies for tips on effectively exporting YouTube cookies 13:33:50.937 [debug] QUERY OK source="settings" db=1.7ms queue=0.6ms idle=1672.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:33:50.937 [debug] QUERY OK source="settings" db=0.6ms idle=1674.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:33:50.938 [debug] QUERY OK source="settings" db=0.7ms idle=1675.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:33:50.938 [debug] QUERY OK source="settings" db=0.6ms idle=1675.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:33:50.938 [debug] Running yt-dlp command for action: get_downloadable_status 13:33:50.938 [debug] Running yt-dlp command for action: get_downloadable_status 13:33:50.941 [debug] QUERY OK source="settings" db=0.8ms idle=910.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:33:50.941 [debug] QUERY OK source="settings" db=0.9ms idle=3.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:33:50.942 [debug] QUERY OK source="settings" db=0.5ms idle=4.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:33:50.942 [debug] QUERY OK source="settings" db=0.7ms idle=3.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:33:50.942 [debug] QUERY OK source="settings" db=0.4ms idle=4.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:33:50.943 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=aCES82xfgdw --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/e5/97/e5972fcf2a0f3be301f61aadaaa31ff00de9e502fb26d9cd2d08245f24c02a5f.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 13:33:50.943 [debug] QUERY OK source="settings" db=0.3ms idle=1.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:33:50.943 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=bhkmFO8DikY --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/59/d0/59d013b436ca58d5633508af977bbff781ba908dfc641e2c0e26e0d21f32ce74.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 13:33:53.050 [info] {"args":{"id":24},"id":202973,"meta":{},"system_time":1767407633050185421,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 13:33:53.051 [debug] QUERY OK source="sources" db=0.6ms queue=0.1ms idle=788.6ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [24] 13:33:53.052 [debug] QUERY OK source="settings" db=0.5ms queue=0.1ms idle=789.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:33:53.053 [debug] QUERY OK source="media_profiles" db=0.3ms idle=790.7ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:33:53.054 [debug] QUERY OK source="settings" db=0.3ms queue=0.1ms idle=10.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:33:53.054 [debug] Fetching recent media IDs from YouTube API for playlist: UUNTjSZfAK117b2kFGNCJfdA 13:33:53.055 [debug] QUERY OK source="settings" db=0.2ms queue=0.1ms idle=4.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:33:53.055 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 13:33:53.425 [debug] QUERY OK source="media_items" db=3.0ms idle=370.6ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND m0."media_id" IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [24, "2J48c2sukbo", "zq9gpqgWFv8", "EWdphas_OP4", "-U2sQ3e3R-0", "XdytKwHuG_8", "t-hori2Io14", "Xbemvi42Ngs", "91m4MQw_sZI", "GfUIbPqAMQs", "4VpVt3zdvL8", "q6Kd5C7O-F8", "EV6DSqTOXM0", "mMvfBUNNKIY", "C215grXAMCk", "_x6TE7hbE1k", "vycMxLco0a0", "lJWhisaNv8E", "4Blxc8mVzQs", "ztqcWc5aaks", "0Dvn039qD8I", "Vx69evZOEAE", "4dzZ44-xVds", "Rews5WNxiNk", "f-BFFWzh9uE", "RfJSMWHO0tY", "gMeUOURvDP8", "LEiL1np9sSM", "F-QeDtQ8Gy4", "9FSIF281OAo", "Shav52BfzWk", "dsCfQ3y5tHQ", "0rpt5sMb7cw", "Fe7Y152ak3Y", "HEuablkqrCg", "BRUTYHBJ_Z4", "gpaV4bgEG-g", "ppjFdEbIS4g", "lEhEMRA17bg", "tpIXmmV4ib4", "LBYQ_NLVKCw", "JsdM3k3QiPc", "TNmSVjGyZx0", "OMVYZziNjhc", "uyfyFRvng3c", "YFBg5NNEW4g", "IkZe4pXDv0k", "ZT0in30U-ug", "kqDqSLOuxmM", "ZgLsNSWN46o", ...] 13:33:53.432 [debug] QUERY OK source="media_items" db=1.3ms idle=378.1ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [24] 13:33:53.436 [debug] QUERY OK source="tasks" db=0.7ms idle=379.9ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [202997, 24, ~U[2026-01-03 02:33:53Z], ~U[2026-01-03 02:33:53Z]] 13:33:53.436 [info] {"args":{"id":24},"id":202973,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":385932,"event":"job:stop","queue_time":782536,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 13:33:56.294 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=bhkmFO8DikY --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/59/d0/59d013b436ca58d5633508af977bbff781ba908dfc641e2c0e26e0d21f32ce74.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 1 with: ERROR: [youtube] bhkmFO8DikY: Sign in to confirm your age. This video may be inappropriate for some users. Use --cookies-from-browser or --cookies for the authentication. See https://github.com/yt-dlp/yt-dlp/wiki/FAQ#how-do-i-pass-cookies-to-yt-dlp for how to manually pass cookies. Also see https://github.com/yt-dlp/yt-dlp/wiki/Extractors#exporting-youtube-cookies for tips on effectively exporting YouTube cookies 13:33:56.294 [error] yt-dlp download error for media item #8380: "ERROR: [youtube] bhkmFO8DikY: Sign in to confirm your age. This video may be inappropriate for some users. Use --cookies-from-browser or --cookies for the authentication. See https://github.com/yt-dlp/yt-dlp/wiki/FAQ#how-do-i-pass-cookies-to-yt-dlp for how to manually pass cookies. Also see https://github.com/yt-dlp/yt-dlp/wiki/Extractors#exporting-youtube-cookies for tips on effectively exporting YouTube cookies\n" 13:33:56.294 [error] yt-dlp download will not be retried: "ERROR: [youtube] bhkmFO8DikY: Sign in to confirm your age. This video may be inappropriate for some users. Use --cookies-from-browser or --cookies for the authentication. See https://github.com/yt-dlp/yt-dlp/wiki/FAQ#how-do-i-pass-cookies-to-yt-dlp for how to manually pass cookies. Also see https://github.com/yt-dlp/yt-dlp/wiki/Extractors#exporting-youtube-cookies for tips on effectively exporting YouTube cookies\n" 13:33:56.296 [info] {"args":{"id":8380},"id":202993,"meta":{},"state":"success","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":10875547,"event":"job:stop","queue_time":415832,"attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 13:33:56.304 [info] {"args":{"id":8401},"id":202994,"meta":{},"system_time":1767407636304546921,"max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 13:33:56.306 [debug] QUERY OK source="media_items" db=0.7ms queue=0.1ms idle=1043.0ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [8401] 13:33:56.306 [info] User scripts lifecyle file either not present or is empty. Skipping. 13:33:56.307 [debug] QUERY OK source="sources" db=0.6ms idle=1044.9ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [7] 13:33:56.308 [debug] QUERY OK source="media_profiles" db=0.5ms idle=257.3ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:33:56.309 [debug] QUERY OK source="media_items" db=0.8ms idle=12.8ms SELECT 1 FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) LIMIT 1 [8401] 13:33:56.311 [debug] QUERY OK source="media_metadata" db=0.2ms idle=6.7ms SELECT m0."id", m0."metadata_filepath", m0."thumbnail_filepath", m0."media_item_id", m0."inserted_at", m0."updated_at", m0."media_item_id" FROM "media_metadata" AS m0 WHERE (m0."media_item_id" = ?) [8401] 13:33:56.312 [debug] QUERY OK source="media_profiles" db=0.4ms idle=5.7ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:33:56.312 [debug] QUERY OK source="settings" db=0.3ms idle=4.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:33:56.313 [debug] QUERY OK source="settings" db=0.2ms idle=4.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:33:56.313 [debug] Running yt-dlp command for action: get_downloadable_status 13:33:56.314 [debug] QUERY OK source="settings" db=0.2ms idle=4.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:33:56.315 [debug] QUERY OK source="settings" db=0.1ms idle=3.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:33:56.315 [debug] QUERY OK source="settings" db=0.1ms idle=2.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:33:56.315 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=ZWSj0M132e8 --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/a9/1c/a91c4bb72257cd246cf4fb062133bc7600309a19e8704e2da2107d95bf8b8498.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 13:33:56.486 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=aCES82xfgdw --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/e5/97/e5972fcf2a0f3be301f61aadaaa31ff00de9e502fb26d9cd2d08245f24c02a5f.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 1 with: ERROR: [youtube] aCES82xfgdw: Sign in to confirm your age. This video may be inappropriate for some users. Use --cookies-from-browser or --cookies for the authentication. See https://github.com/yt-dlp/yt-dlp/wiki/FAQ#how-do-i-pass-cookies-to-yt-dlp for how to manually pass cookies. Also see https://github.com/yt-dlp/yt-dlp/wiki/Extractors#exporting-youtube-cookies for tips on effectively exporting YouTube cookies 13:33:56.486 [error] yt-dlp download error for media item #8350: "ERROR: [youtube] aCES82xfgdw: Sign in to confirm your age. This video may be inappropriate for some users. Use --cookies-from-browser or --cookies for the authentication. See https://github.com/yt-dlp/yt-dlp/wiki/FAQ#how-do-i-pass-cookies-to-yt-dlp for how to manually pass cookies. Also see https://github.com/yt-dlp/yt-dlp/wiki/Extractors#exporting-youtube-cookies for tips on effectively exporting YouTube cookies\n" 13:33:56.487 [error] yt-dlp download will not be retried: "ERROR: [youtube] aCES82xfgdw: Sign in to confirm your age. This video may be inappropriate for some users. Use --cookies-from-browser or --cookies for the authentication. See https://github.com/yt-dlp/yt-dlp/wiki/FAQ#how-do-i-pass-cookies-to-yt-dlp for how to manually pass cookies. Also see https://github.com/yt-dlp/yt-dlp/wiki/Extractors#exporting-youtube-cookies for tips on effectively exporting YouTube cookies\n" 13:33:56.488 [info] {"args":{"id":8350},"id":202992,"meta":{},"state":"success","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":11069010,"event":"job:stop","queue_time":415832,"attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 13:33:56.496 [info] {"args":{"id":8418},"id":202995,"meta":{},"system_time":1767407636496548220,"max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 13:33:56.498 [debug] QUERY OK source="media_items" db=0.5ms queue=0.1ms idle=182.4ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [8418] 13:33:56.498 [info] User scripts lifecyle file either not present or is empty. Skipping. 13:33:56.499 [debug] QUERY OK source="sources" db=0.3ms queue=0.2ms idle=183.9ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [7] 13:33:56.500 [debug] QUERY OK source="media_profiles" db=0.3ms queue=0.1ms idle=184.8ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:33:56.502 [debug] QUERY OK source="media_items" db=0.4ms queue=0.1ms idle=13.1ms SELECT 1 FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) LIMIT 1 [8418] 13:33:56.504 [debug] QUERY OK source="media_metadata" db=0.2ms idle=7.3ms SELECT m0."id", m0."metadata_filepath", m0."thumbnail_filepath", m0."media_item_id", m0."inserted_at", m0."updated_at", m0."media_item_id" FROM "media_metadata" AS m0 WHERE (m0."media_item_id" = ?) [8418] 13:33:56.505 [debug] QUERY OK source="media_profiles" db=0.2ms queue=0.3ms idle=6.4ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:33:56.506 [debug] QUERY OK source="settings" db=0.2ms idle=6.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:33:56.507 [debug] QUERY OK source="settings" db=0.4ms queue=0.1ms idle=5.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:33:56.508 [debug] Running yt-dlp command for action: get_downloadable_status 13:33:56.510 [debug] QUERY OK source="settings" db=0.2ms idle=7.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:33:56.510 [debug] QUERY OK source="settings" db=0.1ms queue=0.1ms idle=6.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:33:56.511 [debug] QUERY OK source="settings" db=0.1ms idle=5.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:33:56.511 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=v6jHhzj08yQ --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/33/49/33493a65404747d67de80b4efb0a1260820bdd9daab657dcde3b507c36648e04.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 13:34:00.163 [info] {"source":"oban","duration":523,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 13:34:01.629 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=ZWSj0M132e8 --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/a9/1c/a91c4bb72257cd246cf4fb062133bc7600309a19e8704e2da2107d95bf8b8498.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 1 with: ERROR: [youtube] ZWSj0M132e8: Sign in to confirm your age. This video may be inappropriate for some users. Use --cookies-from-browser or --cookies for the authentication. See https://github.com/yt-dlp/yt-dlp/wiki/FAQ#how-do-i-pass-cookies-to-yt-dlp for how to manually pass cookies. Also see https://github.com/yt-dlp/yt-dlp/wiki/Extractors#exporting-youtube-cookies for tips on effectively exporting YouTube cookies 13:34:01.630 [debug] QUERY OK source="settings" db=0.2ms queue=0.1ms idle=1367.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:34:01.631 [debug] QUERY OK source="settings" db=0.2ms queue=0.1ms idle=1368.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:34:01.632 [debug] Running yt-dlp command for action: get_downloadable_status 13:34:01.633 [debug] QUERY OK source="settings" db=0.2ms idle=1370.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:34:01.634 [debug] QUERY OK source="settings" db=0.3ms idle=565.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:34:01.634 [debug] QUERY OK source="settings" db=0.1ms idle=372.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:34:01.635 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=ZWSj0M132e8 --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/57/d4/57d42b4146b085b2bd1ee48e6b16bb196b81545ac95819fd8922e925e99239f5.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 13:34:01.813 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=v6jHhzj08yQ --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/33/49/33493a65404747d67de80b4efb0a1260820bdd9daab657dcde3b507c36648e04.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 1 with: ERROR: [youtube] v6jHhzj08yQ: Sign in to confirm your age. This video may be inappropriate for some users. Use --cookies-from-browser or --cookies for the authentication. See https://github.com/yt-dlp/yt-dlp/wiki/FAQ#how-do-i-pass-cookies-to-yt-dlp for how to manually pass cookies. Also see https://github.com/yt-dlp/yt-dlp/wiki/Extractors#exporting-youtube-cookies for tips on effectively exporting YouTube cookies 13:34:01.815 [debug] QUERY OK source="settings" db=0.5ms queue=0.1ms idle=183.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:34:01.816 [debug] QUERY OK source="settings" db=0.4ms queue=0.1ms idle=184.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:34:01.817 [debug] Running yt-dlp command for action: get_downloadable_status 13:34:01.820 [debug] QUERY OK source="settings" db=0.3ms queue=0.1ms idle=186.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:34:01.820 [debug] QUERY OK source="settings" db=0.2ms idle=186.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:34:01.821 [debug] QUERY OK source="settings" db=0.1ms idle=186.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:34:01.821 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=v6jHhzj08yQ --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/19/86/19863f1efb6f0a43e19bd00a29e8488e78fef98bff21fd83645e0558ecbca0be.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 13:34:06.715 [info] GET /sources/11/media/58610/force_download 13:34:06.716 [debug] QUERY OK source="settings" db=0.5ms queue=0.1ms idle=1454.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:34:06.717 [debug] QUERY OK source="settings" db=0.3ms idle=1454.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:34:06.717 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 13:34:06.718 [error] #PID<0.10418.0> running PinchflatWeb.Endpoint (connection #PID<0.10417.0>, stream id 1) terminated Server: pinchflat.uiau7e.uncld.dev:80 (http) Request: GET /sources/11/media/58610/force_download ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/11/media/58610/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.10417.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/11/media/58610/force_download", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 45284}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "from" => "gptbot(at)openai.com", "host" => "pinchflat.uiau7e.uncld.dev", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.3; +https://openai.com/gptbot)", "via" => "2.0 Caddy", "x-forwarded-for" => "74.7.227.183", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https", "x-openai-host-hash" => "454925582" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.uiau7e.uncld.dev", method: "GET", owner: #PID<0.10418.0>, params: %{}, path_info: ["sources", "11", "media", "58610", "force_download"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.uiau7e.uncld.dev", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {10, 210, 0, 2}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"accept-encoding", "gzip, br, deflate"}, {"from", "gptbot(at)openai.com"}, {"host", "pinchflat.uiau7e.uncld.dev"}, {"user-agent", "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.3; +https://openai.com/gptbot)"}, {"via", "2.0 Caddy"}, {"x-forwarded-for", "74.7.227.183"}, {"x-forwarded-host", "pinchflat.uiau7e.uncld.dev"}, {"x-forwarded-proto", "https"}, {"x-openai-host-hash", "454925582"} ], request_path: "/sources/11/media/58610/force_download", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GIcX4_vLMkL3fegAAehB"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.10417.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/11/media/58610/force_download", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 45284}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "from" => "gptbot(at)openai.com", "host" => "pinchflat.uiau7e.uncld.dev", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.3; +https://openai.com/gptbot)", "via" => "2.0 Caddy", "x-forwarded-for" => "74.7.227.183", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https", "x-openai-host-hash" => "454925582" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/11/media/58610/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.10417.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/11/media/58610/force_download", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 45284}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "from" => "gptbot(at)openai.com", "host" => "pinchflat.uiau7e.uncld.dev", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.3; +https://openai.com/gptbot)", "via" => "2.0 Caddy", "x-forwarded-for" => "74.7.227.183", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https", "x-openai-host-hash" => "454925582" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.uiau7e.uncld.dev", method: "GET", owner: #PID<0.10418.0>, params: %{}, path_info: ["sources", "11", "media", "58610", "force_download"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.uiau7e.uncld.dev", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {10, 210, 0, 2}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"accept-en (truncated) 13:34:06.972 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=ZWSj0M132e8 --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/57/d4/57d42b4146b085b2bd1ee48e6b16bb196b81545ac95819fd8922e925e99239f5.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 1 with: ERROR: [youtube] ZWSj0M132e8: Sign in to confirm your age. This video may be inappropriate for some users. Use --cookies-from-browser or --cookies for the authentication. See https://github.com/yt-dlp/yt-dlp/wiki/FAQ#how-do-i-pass-cookies-to-yt-dlp for how to manually pass cookies. Also see https://github.com/yt-dlp/yt-dlp/wiki/Extractors#exporting-youtube-cookies for tips on effectively exporting YouTube cookies 13:34:06.972 [error] yt-dlp download error for media item #8401: "ERROR: [youtube] ZWSj0M132e8: Sign in to confirm your age. This video may be inappropriate for some users. Use --cookies-from-browser or --cookies for the authentication. See https://github.com/yt-dlp/yt-dlp/wiki/FAQ#how-do-i-pass-cookies-to-yt-dlp for how to manually pass cookies. Also see https://github.com/yt-dlp/yt-dlp/wiki/Extractors#exporting-youtube-cookies for tips on effectively exporting YouTube cookies\n" 13:34:06.972 [error] yt-dlp download will not be retried: "ERROR: [youtube] ZWSj0M132e8: Sign in to confirm your age. This video may be inappropriate for some users. Use --cookies-from-browser or --cookies for the authentication. See https://github.com/yt-dlp/yt-dlp/wiki/FAQ#how-do-i-pass-cookies-to-yt-dlp for how to manually pass cookies. Also see https://github.com/yt-dlp/yt-dlp/wiki/Extractors#exporting-youtube-cookies for tips on effectively exporting YouTube cookies\n" 13:34:06.973 [info] {"args":{"id":8401},"id":202994,"meta":{},"state":"success","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":10667997,"event":"job:stop","queue_time":11301752,"attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 13:34:07.222 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=v6jHhzj08yQ --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/19/86/19863f1efb6f0a43e19bd00a29e8488e78fef98bff21fd83645e0558ecbca0be.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 1 with: ERROR: [youtube] v6jHhzj08yQ: Sign in to confirm your age. This video may be inappropriate for some users. Use --cookies-from-browser or --cookies for the authentication. See https://github.com/yt-dlp/yt-dlp/wiki/FAQ#how-do-i-pass-cookies-to-yt-dlp for how to manually pass cookies. Also see https://github.com/yt-dlp/yt-dlp/wiki/Extractors#exporting-youtube-cookies for tips on effectively exporting YouTube cookies 13:34:07.222 [error] yt-dlp download error for media item #8418: "ERROR: [youtube] v6jHhzj08yQ: Sign in to confirm your age. This video may be inappropriate for some users. Use --cookies-from-browser or --cookies for the authentication. See https://github.com/yt-dlp/yt-dlp/wiki/FAQ#how-do-i-pass-cookies-to-yt-dlp for how to manually pass cookies. Also see https://github.com/yt-dlp/yt-dlp/wiki/Extractors#exporting-youtube-cookies for tips on effectively exporting YouTube cookies\n" 13:34:07.222 [error] yt-dlp download will not be retried: "ERROR: [youtube] v6jHhzj08yQ: Sign in to confirm your age. This video may be inappropriate for some users. Use --cookies-from-browser or --cookies for the authentication. See https://github.com/yt-dlp/yt-dlp/wiki/FAQ#how-do-i-pass-cookies-to-yt-dlp for how to manually pass cookies. Also see https://github.com/yt-dlp/yt-dlp/wiki/Extractors#exporting-youtube-cookies for tips on effectively exporting YouTube cookies\n" 13:34:07.223 [info] {"args":{"id":8418},"id":202995,"meta":{},"state":"success","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":10726304,"event":"job:stop","queue_time":11494837,"attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 13:34:12.721 [info] {"source":"oban","duration":4202,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:34:32.159 [info] GET /sources/12 13:34:32.159 [debug] Processing with PinchflatWeb.Sources.SourceController.show/2 Parameters: %{"id" => "12"} Pipelines: [:browser] 13:34:32.160 [info] GET /sources/27 13:34:32.160 [debug] Processing with PinchflatWeb.Sources.SourceController.show/2 Parameters: %{"id" => "27"} Pipelines: [:browser] 13:34:32.161 [debug] QUERY OK source="sources" db=1.0ms queue=0.1ms idle=1898.1ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [12] 13:34:32.161 [debug] QUERY OK source="sources" db=1.2ms idle=1898.5ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [27] 13:34:32.163 [debug] QUERY OK source="media_profiles" db=1.7ms idle=1899.5ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:34:32.163 [debug] QUERY OK source="media_profiles" db=1.2ms queue=0.1ms idle=1002.3ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:34:32.164 [debug] QUERY OK source="tasks" db=0.9ms queue=0.1ms idle=2.5ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at" FROM "tasks" AS t0 INNER JOIN "oban_jobs" AS o1 ON o1."id" = t0."job_id" WHERE (t0."source_id" = ?) AND (o1."state" IN (?,?,?,?)) [27, "executing", "available", "scheduled", "retryable"] 13:34:32.165 [debug] QUERY OK source="tasks" db=1.5ms queue=0.1ms idle=2.0ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at" FROM "tasks" AS t0 INNER JOIN "oban_jobs" AS o1 ON o1."id" = t0."job_id" WHERE (t0."source_id" = ?) AND (o1."state" IN (?,?,?,?)) [12, "executing", "available", "scheduled", "retryable"] 13:34:32.165 [debug] QUERY OK source="settings" db=0.6ms idle=1.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:34:32.166 [debug] QUERY OK source="oban_jobs" db=0.4ms idle=2.1ms SELECT o0."id", o0."state", o0."queue", o0."worker", o0."args", o0."meta", o0."tags", o0."errors", o0."attempt", o0."attempted_by", o0."max_attempts", o0."priority", o0."attempted_at", o0."cancelled_at", o0."completed_at", o0."discarded_at", o0."inserted_at", o0."scheduled_at", o0."id" FROM "oban_jobs" AS o0 WHERE (o0."id" = ?) [201985] 13:34:32.166 [debug] QUERY OK source="settings" db=0.6ms idle=1.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:34:32.167 [debug] QUERY OK source="settings" db=0.7ms idle=1.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:34:32.167 [debug] QUERY OK source="settings" db=0.3ms idle=1.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:34:32.167 [debug] QUERY OK source="settings" db=0.4ms idle=1.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:34:32.169 [debug] QUERY OK source="settings" db=0.6ms idle=2.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:34:32.169 [debug] QUERY OK source="sources" db=0.2ms queue=0.2ms idle=2.6ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [27] 13:34:32.173 [debug] QUERY OK source="sources" db=0.5ms idle=4.9ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [12] 13:34:32.178 [debug] QUERY OK source="media_items" db=8.2ms idle=2.9ms SELECT count(m0."id") FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [27] 13:34:32.184 [debug] QUERY OK source="media_items" db=5.9ms queue=0.1ms idle=9.2ms SELECT m0."id", m0."title", m0."uploaded_at", m0."prevent_download", m0."last_error" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) ORDER BY m0."uploaded_at" DESC LIMIT ? OFFSET ? [27, 10, 0] 13:34:32.188 [debug] QUERY OK source="sources" db=0.8ms queue=0.1ms idle=17.6ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [27] 13:34:32.190 [debug] QUERY OK source="media_items" db=16.8ms decode=0.1ms idle=6.0ms SELECT count(m0."id") FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [12] 13:34:32.192 [debug] QUERY OK source="media_items" db=3.4ms idle=15.7ms SELECT count(m0."id") FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND NOT (m0."media_filepath" IS NULL)) [27] 13:34:32.193 [debug] QUERY OK source="media_items" db=1.0ms queue=0.1ms idle=7.9ms SELECT m0."id", m0."title", m0."uploaded_at", m0."prevent_download", m0."last_error" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND NOT (m0."media_filepath" IS NULL)) ORDER BY m0."uploaded_at" DESC LIMIT ? OFFSET ? [27, 10, 0] 13:34:32.202 [debug] QUERY OK source="media_items" db=11.4ms idle=12.8ms SELECT m0."id", m0."title", m0."uploaded_at", m0."prevent_download", m0."last_error" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) ORDER BY m0."uploaded_at" DESC LIMIT ? OFFSET ? [12, 10, 0] 13:34:32.204 [debug] QUERY OK source="sources" db=0.8ms queue=0.6ms idle=14.3ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [27] 13:34:32.204 [debug] QUERY OK source="sources" db=0.9ms idle=12.6ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [12] 13:34:32.205 [debug] QUERY OK source="media_items" db=1.1ms idle=11.0ms SELECT count(m0."id") FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND NOT (m0."media_filepath" IS NULL)) [12] 13:34:32.207 [debug] QUERY OK source="media_items" db=1.0ms idle=3.3ms SELECT m0."id", m0."title", m0."uploaded_at", m0."prevent_download", m0."last_error" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND NOT (m0."media_filepath" IS NULL)) ORDER BY m0."uploaded_at" DESC LIMIT ? OFFSET ? [12, 10, 0] 13:34:32.209 [debug] QUERY OK source="media_items" db=5.1ms idle=12.2ms SELECT count(m0."id") FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds"))))) [27] 13:34:32.211 [debug] QUERY OK source="sources" db=0.6ms idle=6.1ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [12] 13:34:32.216 [debug] QUERY OK source="media_items" db=6.2ms queue=0.1ms idle=5.8ms SELECT m0."id", m0."title", m0."uploaded_at", m0."prevent_download", m0."last_error" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds"))))) ORDER BY m0."uploaded_at" DESC LIMIT ? OFFSET ? [27, 10, 0] 13:34:32.217 [debug] QUERY OK source="media_items" db=5.7ms idle=5.8ms SELECT count(m0."id") FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds"))))) [12] 13:34:32.219 [info] Sent 200 in 59ms 13:34:32.220 [debug] QUERY OK source="media_items" db=2.4ms queue=0.2ms idle=10.6ms SELECT m0."id", m0."title", m0."uploaded_at", m0."prevent_download", m0."last_error" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds"))))) ORDER BY m0."uploaded_at" DESC LIMIT ? OFFSET ? [12, 10, 0] 13:34:32.222 [info] Sent 200 in 63ms 13:34:35.178 [info] {"args":{"id":3},"id":202974,"meta":{},"system_time":1767407675177827433,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 13:34:35.179 [debug] QUERY OK source="sources" db=0.9ms idle=1916.2ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [3] 13:34:35.180 [debug] QUERY OK source="settings" db=0.7ms idle=1917.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:34:35.181 [debug] QUERY OK source="media_profiles" db=0.4ms queue=0.1ms idle=1012.5ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:34:35.182 [debug] QUERY OK source="settings" db=0.9ms queue=0.1ms idle=10.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:34:35.182 [debug] Fetching recent media IDs from YouTube API for playlist: UUISrVZmDM4x-Rq9mmNUw7Zw 13:34:35.183 [debug] QUERY OK source="settings" db=0.4ms idle=5.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:34:35.183 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 13:34:35.587 [debug] QUERY OK source="media_items" db=4.6ms idle=403.0ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND m0."media_id" IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [3, "CtF5dLHITYA", "SGJkxRdkRGg", "OUCt85aJaAA", "9gARPYZOka4", "-uH-Gi5tjEw", "qwUBBQKYX94", "s8VLDSQJ8nA", "EvPfr0lKkh4", "msXzAxF49gA", "hQCWaSvjkU0", "RcmjVsy3a-g", "xtuNc9vYJG4", "fj2tcg8OzsM", "2FZ4IfPACDM", "2Q9DzW20YJ8", "IVsWFGOE_mw", "vPxpMcv2Z4Y", "Zverj_ldlhY", "pQK8xasPd9Q", "_Yo7nh8u9pk", "4HzltsOvc0A", "a8UBLMm71JY", "3vqbr7-6Twk", "Df0iVjAKJZw", "n-X-AJpHUyI", "4CV7jI0e0Hw", "nqPoocCKci8", "5IIOdWnJGxg", "jkPL8BaM4ko", "CzeQtnRmUZ0", "9u-0d2IVZ3I", "igtvNmqsKM0", "47XDpW4nOzk", "8xvd7xSLQOo", "PnQPZMN0kIY", "feDph2WgRfI", "Z5FZ2XfX4Uc", "e0DxPopyrqM", "YvaK-Tjp2ck", "6_CctUPWX4I", "_DzHKw8yK58", "VnAkeiehyCg", "EFW1iCguDV8", "CEj7B1VzUwU", "3cy5fWUssjQ", "ZnjoTYmqLhs", "5IxtizzvaWw", "ZnBsMRl-EL0", "ET-M3T8E0PU", ...] 13:34:35.596 [debug] QUERY OK source="media_items" db=7.2ms idle=408.2ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [3] 13:34:35.599 [debug] QUERY OK source="tasks" db=0.5ms idle=415.2ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [202998, 3, ~U[2026-01-03 02:34:35Z], ~U[2026-01-03 02:34:35Z]] 13:34:35.599 [info] {"args":{"id":3},"id":202974,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":421292,"event":"job:stop","queue_time":604987,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 13:34:38.188 [info] {"args":{"id":22},"id":202975,"meta":{},"system_time":1767407678188618408,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 13:34:38.190 [debug] QUERY OK source="sources" db=0.8ms idle=927.3ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [22] 13:34:38.191 [debug] QUERY OK source="settings" db=0.6ms idle=928.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:34:38.192 [debug] QUERY OK source="media_profiles" db=0.8ms idle=929.4ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:34:38.193 [debug] QUERY OK source="settings" db=0.8ms idle=10.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:34:38.193 [debug] Fetching recent media IDs from YouTube API for playlist: UUP1RHyOhO98Yn2rMbDBirxA 13:34:38.194 [debug] QUERY OK source="settings" db=0.4ms idle=5.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:34:38.194 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 13:34:38.536 [debug] QUERY OK source="media_items" db=2.8ms idle=342.9ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND m0."media_id" IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [22, "N5RzDzO54gQ", "5glegyagphQ", "VtiV_RfFqNM", "qNYyH7bMcbI", "MPdiQsg_zQ8", "4-VOc2Aich8", "gMrBK9rp6As", "p0lqYk8_uMI", "aKpQHxUiwxc", "KsuhL0zVo3I", "pCJcoGDsbxc", "_5AR-GKeqlk", "VcJG7rIOjb0", "vRzAE_0VnXQ", "uj_bcWLWMtw", "xRyiudwo_jM", "pTMRT4CRUoM", "W8_LEBSOsPg", "YZuP7d99kCw"] 13:34:38.538 [debug] QUERY OK source="settings" db=0.6ms idle=346.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:34:38.538 [debug] QUERY OK source="settings" db=0.5ms idle=345.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:34:38.539 [debug] Running yt-dlp command for action: get_media_attributes 13:34:38.541 [debug] QUERY OK source="settings" db=0.2ms idle=347.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:34:38.542 [debug] QUERY OK source="settings" db=0.8ms idle=347.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:34:38.542 [debug] QUERY OK source="settings" db=0.3ms idle=6.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:34:38.543 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=gMrBK9rp6As --simulate --skip-download --output /downloads/White Raven/Season %(upload_date>%Y)S/s%(upload_date>%Y)Se%(upload_date>%m%d)S00 - %(title)S.%(ext)S --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --print-to-file %(.{id,title,live_status,original_url,description,aspect_ratio,duration,upload_date,timestamp,playlist_index,filename})j /tmp/pinchflat/data/60/04/6004cf48cea1441b44306a3d2feb1d41b5f38b81cfbae7e09cfbda1f6221bd4d.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 13:34:40.356 [info] GET /sources/new 13:34:40.356 [debug] Processing with PinchflatWeb.Sources.SourceController.new/2 Parameters: %{} Pipelines: [:browser] 13:34:40.356 [info] GET /sources/7/edit 13:34:40.357 [debug] Processing with PinchflatWeb.Sources.SourceController.edit/2 Parameters: %{"id" => "7"} Pipelines: [:browser] 13:34:40.357 [debug] QUERY OK source="media_profiles" db=0.3ms queue=0.1ms idle=168.1ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at" FROM "media_profiles" AS m0 ORDER BY m0."name" [] 13:34:40.357 [debug] QUERY OK source="sources" db=0.3ms idle=95.4ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [7] 13:34:40.358 [debug] QUERY OK source="settings" db=0.7ms idle=95.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:34:40.359 [debug] QUERY OK source="settings" db=0.1ms queue=0.1ms idle=96.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:34:40.359 [debug] QUERY OK source="media_profiles" db=1.2ms queue=0.1ms idle=96.2ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at" FROM "media_profiles" AS m0 ORDER BY m0."name" [] 13:34:40.360 [debug] QUERY OK source="settings" db=0.7ms queue=0.1ms idle=2.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:34:40.361 [debug] QUERY OK source="settings" db=0.9ms queue=0.1ms idle=2.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:34:40.361 [debug] QUERY OK source="settings" db=0.3ms queue=0.3ms idle=2.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:34:40.361 [debug] QUERY OK source="settings" db=0.3ms queue=0.1ms idle=2.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:34:40.362 [debug] QUERY OK source="settings" db=0.2ms idle=2.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:34:40.362 [debug] QUERY OK source="settings" db=0.3ms idle=2.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:34:40.365 [info] Sent 200 in 9ms 13:34:40.372 [info] Sent 200 in 16ms 13:34:42.726 [info] {"source":"oban","duration":4646,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:34:43.107 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=gMrBK9rp6As --simulate --skip-download --output /downloads/White Raven/Season %(upload_date>%Y)S/s%(upload_date>%Y)Se%(upload_date>%m%d)S00 - %(title)S.%(ext)S --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --print-to-file %(.{id,title,live_status,original_url,description,aspect_ratio,duration,upload_date,timestamp,playlist_index,filename})j /tmp/pinchflat/data/60/04/6004cf48cea1441b44306a3d2feb1d41b5f38b81cfbae7e09cfbda1f6221bd4d.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 1 with: ERROR: [youtube] gMrBK9rp6As: Offline. 13:34:43.107 [error] Error creating media item 'gMrBK9rp6As' from URL: {:error, "ERROR: [youtube] gMrBK9rp6As: Offline.\n", 1} 13:34:43.110 [debug] QUERY OK source="media_items" db=1.4ms queue=0.1ms idle=846.4ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [22] 13:34:43.114 [debug] QUERY OK source="tasks" db=0.8ms idle=851.3ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [202999, 22, ~U[2026-01-03 02:34:43Z], ~U[2026-01-03 02:34:43Z]] 13:34:43.115 [info] {"args":{"id":22},"id":202975,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":4925903,"event":"job:stop","queue_time":299082,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 13:34:49.221 [info] {"args":{"id":1},"id":202976,"meta":{},"system_time":1767407689221633976,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 13:34:49.222 [debug] QUERY OK source="sources" db=0.3ms idle=960.3ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 13:34:49.223 [debug] QUERY OK source="settings" db=0.3ms idle=961.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:34:49.224 [debug] QUERY OK source="media_profiles" db=0.2ms idle=961.7ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:34:49.224 [debug] QUERY OK source="settings" db=0.2ms idle=10.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:34:49.224 [debug] Fetching recent media IDs from YouTube API for playlist: UU54SLBnD5k5U3Q6N__UjbAw 13:34:49.225 [debug] QUERY OK source="settings" db=0.2ms idle=3.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:34:49.225 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 13:34:49.629 [debug] QUERY OK source="media_items" db=6.3ms idle=399.8ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND m0."media_id" IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [1, "UYCKIroDVBY", "ynOiaE9f6NY", "At_WjGosTNM", "_s7ZzdPoVZE", "ulhKFEKXIEI", "YpQ2jupcrHk", "PetMnG6cCDw", "VdxlXCnA1DM", "uj2s7HZQigU", "rZ7Y_gPAHig", "LTmK8Ab6IFE", "sZKNVGI8xt0", "_PUZIf6VQto", "J2-1ZErtS7A", "OEyptSEM5Tw", "HLeY2_hJvRk", "DkZ5uXcDxjc", "zPWe_aBuNfM", "PZN18led4ok", "66F09ebI9gw", "Pfok4B_xyaI", "e5HEGCCadBU", "hYFsHfPquPg", "nKsnfEB29ek", "OpDh_O473Ms", "ZTtZ12XtQpg", "TphXloX3PEI", "4Qhp4VPP2Wo", "J5l7jvbp3u8", "uL_YQMkkbUg", "SAZ17l0EwxI", "fTa_T2pVwuk", "6HpTVfX0SvI", "XlIWsRyXL8U", "nM1GQNJU6LQ", "WVN1LNy1zgo", "0Fxf6_q7qHc", "dL0KPsy-Dww", "G43wJ7YyWzM", "yVy89TnL9Zg", "BR1VRJDu-gc", "-2HeoqiMC6s", "7WXyx51z5G8", "jCk-9S8PQyc", "vGEIHv1XelY", "rOI7HYGGHpo", "gNeGHhU6UaI", "gUlkwSHOT7Q", "tpf7TxliCxA", ...] 13:34:49.636 [debug] QUERY OK source="media_items" db=5.9ms idle=407.4ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [1] 13:34:49.640 [debug] QUERY OK source="tasks" db=0.6ms idle=414.8ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [203000, 1, ~U[2026-01-03 02:34:49Z], ~U[2026-01-03 02:34:49Z]] 13:34:49.641 [info] {"args":{"id":1},"id":202976,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":419126,"event":"job:stop","queue_time":461506,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 13:34:53.246 [info] GET /sources/5/edit 13:34:53.246 [debug] Processing with PinchflatWeb.Sources.SourceController.edit/2 Parameters: %{"id" => "5"} Pipelines: [:browser] 13:34:53.246 [info] GET /sources/6/edit 13:34:53.246 [debug] Processing with PinchflatWeb.Sources.SourceController.edit/2 Parameters: %{"id" => "6"} Pipelines: [:browser] 13:34:53.248 [debug] QUERY OK source="sources" db=1.1ms queue=0.1ms idle=1984.6ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [5] 13:34:53.248 [debug] QUERY OK source="sources" db=1.1ms idle=1985.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [6] 13:34:53.250 [debug] QUERY OK source="media_profiles" db=1.5ms queue=0.1ms idle=1986.3ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at" FROM "media_profiles" AS m0 ORDER BY m0."name" [] 13:34:53.250 [debug] QUERY OK source="media_profiles" db=1.5ms idle=1026.1ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at" FROM "media_profiles" AS m0 ORDER BY m0."name" [] 13:34:53.251 [debug] QUERY OK source="settings" db=0.7ms queue=0.1ms idle=24.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:34:53.252 [debug] QUERY OK source="settings" db=0.9ms idle=2.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:34:53.252 [debug] QUERY OK source="settings" db=0.3ms queue=0.1ms idle=3.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:34:53.252 [debug] QUERY OK source="settings" db=0.3ms idle=1.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:34:53.254 [debug] QUERY OK source="settings" db=0.4ms idle=3.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:34:53.254 [debug] QUERY OK source="settings" db=0.4ms queue=0.1ms idle=1.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:34:53.263 [info] Sent 200 in 16ms 13:34:53.263 [info] Sent 200 in 16ms 13:35:00.164 [info] {"source":"oban","duration":423,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 13:35:08.910 [info] GET /sources/17/media/55270/force_download 13:35:08.912 [debug] QUERY OK source="settings" db=0.6ms queue=0.1ms idle=1644.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:35:08.913 [debug] QUERY OK source="settings" db=0.6ms queue=0.2ms idle=651.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:35:08.914 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 13:35:08.915 [error] #PID<0.10441.0> running PinchflatWeb.Endpoint (connection #PID<0.10440.0>, stream id 1) terminated Server: pinchflat.uiau7e.uncld.dev:80 (http) Request: GET /sources/17/media/55270/force_download ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/17/media/55270/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.10440.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/17/media/55270/force_download", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 50020}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "from" => "gptbot(at)openai.com", "host" => "pinchflat.uiau7e.uncld.dev", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.3; +https://openai.com/gptbot)", "via" => "2.0 Caddy", "x-forwarded-for" => "74.7.227.183", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https", "x-openai-host-hash" => "454925582" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.uiau7e.uncld.dev", method: "GET", owner: #PID<0.10441.0>, params: %{}, path_info: ["sources", "17", "media", "55270", "force_download"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.uiau7e.uncld.dev", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {10, 210, 0, 2}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"accept-encoding", "gzip, br, deflate"}, {"from", "gptbot(at)openai.com"}, {"host", "pinchflat.uiau7e.uncld.dev"}, {"user-agent", "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.3; +https://openai.com/gptbot)"}, {"via", "2.0 Caddy"}, {"x-forwarded-for", "74.7.227.183"}, {"x-forwarded-host", "pinchflat.uiau7e.uncld.dev"}, {"x-forwarded-proto", "https"}, {"x-openai-host-hash", "454925582"} ], request_path: "/sources/17/media/55270/force_download", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GIcX8nbrJJpuKlwAAetB"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.10440.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/17/media/55270/force_download", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 50020}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "from" => "gptbot(at)openai.com", "host" => "pinchflat.uiau7e.uncld.dev", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.3; +https://openai.com/gptbot)", "via" => "2.0 Caddy", "x-forwarded-for" => "74.7.227.183", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https", "x-openai-host-hash" => "454925582" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/17/media/55270/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.10440.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/17/media/55270/force_download", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 50020}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "from" => "gptbot(at)openai.com", "host" => "pinchflat.uiau7e.uncld.dev", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.3; +https://openai.com/gptbot)", "via" => "2.0 Caddy", "x-forwarded-for" => "74.7.227.183", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https", "x-openai-host-hash" => "454925582" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.uiau7e.uncld.dev", method: "GET", owner: #PID<0.10441.0>, params: %{}, path_info: ["sources", "17", "media", "55270", "force_download"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.uiau7e.uncld.dev", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {10, 210, 0, 2}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"accept-en (truncated) 13:35:10.284 [info] {"args":{"id":2},"id":202977,"meta":{},"system_time":1767407710284176600,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 13:35:10.285 [debug] QUERY OK source="sources" db=0.4ms queue=0.1ms idle=22.7ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [2] 13:35:10.286 [debug] QUERY OK source="settings" db=0.3ms queue=0.1ms idle=23.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:35:10.288 [debug] QUERY OK source="media_profiles" db=1.6ms idle=24.3ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:35:10.289 [debug] QUERY OK source="settings" db=0.7ms idle=11.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:35:10.289 [debug] Fetching recent media IDs from YouTube API for playlist: UUeE3lj6pLX_gCd0Yvns517Q 13:35:10.290 [debug] QUERY OK source="settings" db=0.4ms queue=0.1ms idle=5.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:35:10.290 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 13:35:10.869 [debug] QUERY OK source="media_items" db=2.8ms idle=580.3ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND m0."media_id" IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [2, "0k6I__61QDc", "tAnxIOSrasI", "qGmURDZnDhc", "vBsPoGzQPxA", "TiJoEoREmdE", "C-CkKUyzQhA", "K1UWf6n1FmY", "9VKS1P-aXSc", "kt_SNpPa2w4", "oaXa30IfZMc", "pUBcfLBwPXw", "WkG24B0xw1E", "fBQxlA3KI5U", "HbeqOllBS9o", "li1fOq_qqHM", "rsqGEZeczYw", "d7HFMZOp0S4", "oipxUVJUZrc", "cTxE_oPyD9Q", "yJlKrUX8Bvk", "pYtoIdfLeHA", "qPMGKmyQ1AA", "7W651YDFjhc", "EfUXdMBXauI", "804ky1qeBuE", "DRMng-9g9Ng", "Nzp4LPVF_7M", "1psbOjlzkyA", "IwMM9c9Q0Pw", "xhbzG8V0eSA", "-CSyf5_q-XQ", "C__g4XPdYRY", "7-FRyPsqWG0", "0-fliBPsvZI", "xLZYbjMl3hY", "qs36351JQys", "-aty2xx6kTI", "Ty7NA3HvUsk", "w6xdmHLxzSM", "-5YmR5lvMlQ", "fFbRmFdCoYc", "XkPAB-oXAoU", "rTecGGMrRKc", "tHjU0F1najQ", "Z6otzigVvWM", "9m36Ncgctbg", "B1KUJbbpoK0", "rqGLjKlA_tM", "PZDZuoa3kJE", ...] 13:35:10.888 [debug] QUERY OK source="media_items" db=16.0ms idle=586.4ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [2] 13:35:10.893 [debug] QUERY OK source="tasks" db=0.8ms idle=602.3ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [203001, 2, ~U[2026-01-03 02:35:10Z], ~U[2026-01-03 02:35:10Z]] 13:35:10.895 [info] {"args":{"id":2},"id":202977,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":609818,"event":"job:stop","queue_time":252562,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 13:35:12.730 [info] {"source":"oban","duration":3188,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:35:42.735 [info] {"source":"oban","duration":3691,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:36:00.166 [info] {"source":"oban","duration":814,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 13:36:06.483 [info] {"args":{"id":26},"id":202978,"meta":{},"system_time":1767407766483522987,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 13:36:06.484 [debug] QUERY OK source="sources" db=0.8ms idle=222.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [26] 13:36:06.486 [debug] QUERY OK source="settings" db=0.6ms idle=223.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:36:06.487 [debug] QUERY OK source="media_profiles" db=0.6ms idle=224.2ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:36:06.487 [debug] QUERY OK source="settings" db=0.4ms idle=11.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:36:06.488 [debug] Fetching recent media IDs from YouTube API for playlist: UU6NY7eg1FxCfAVX58yL0cJw 13:36:06.488 [debug] QUERY OK source="settings" db=0.3ms idle=4.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:36:06.488 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 13:36:06.989 [debug] QUERY OK source="media_items" db=4.6ms idle=499.5ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND m0."media_id" IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [26, "o2tiLxanOd0", "3Hkalon06bY", "acwCbVzHnRM", "m3Cddar422Y", "QItYx18RK4M", "iFrwlymvtTM", "CBKzBKWhNmE", "twi0ZP1ZWew", "MChkfGtdrgI", "usOf_0SOPl8", "7CamgxCV_lg", "CYW3qAtbiSg", "hkLPA0MEUFk", "Z9APq63an58", "MA2a2BtDQtE", "a23hasz0yk8", "o4tK4PhiK_c", "2-lUv1_A_KU", "W6GGXQ4xVdg", "TOIuoWmEqxo", "JRXSDo6asDk", "iAodr4mipf0", "12wArTNB9dk", "CFZ0TtEbofU", "RwW6yAVtf6Q", "9RshF2jpgLo", "MV8U7XQUpnY", "G0o-l5G0M4s", "FVOkr5w0O0I", "1IFJive9Bvc", "kuc2kAgYD8M", "jHOE86EMHvA", "CjuPAweX08c", "LH0RNHxukJs", "o6OxlF4vAuw", "Qxfr7h-PzdA", "xU_1w6OSnac", "-6G1TNBxp08", "o-ripoq_oXU", "Uevcwu2GLMs", "BAoXgNQ_wRI", "p4NWPk9B20I", "XKxqsR_4w_I", "BNtAWc-vLX4", "ktw-dS-26Gk", "Idbcu-oVtDs", "JCxqgAhaJj4", "A0vzWxUO5TA", "6M0wfDl0LEI", ...] 13:36:06.995 [debug] QUERY OK source="media_items" db=4.4ms idle=505.0ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [26] 13:36:06.998 [debug] QUERY OK source="tasks" db=0.6ms idle=509.5ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [203002, 26, ~U[2026-01-03 02:36:06Z], ~U[2026-01-03 02:36:06Z]] 13:36:06.999 [info] {"args":{"id":26},"id":202978,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":515446,"event":"job:stop","queue_time":432378,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 13:36:09.560 [info] GET /sources/13/media/12720 13:36:09.560 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "12720", "source_id" => "13"} Pipelines: [:browser] 13:36:09.562 [debug] QUERY OK source="media_items" db=1.2ms idle=1298.9ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [12720] 13:36:09.564 [debug] QUERY OK source="tasks" db=1.8ms idle=1300.6ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [12720] 13:36:09.565 [debug] QUERY OK source="sources" db=1.9ms queue=0.1ms idle=1300.8ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [13] 13:36:09.566 [debug] QUERY OK source="oban_jobs" db=0.7ms queue=0.1ms idle=1082.0ms SELECT o0."id", o0."state", o0."queue", o0."worker", o0."args", o0."meta", o0."tags", o0."errors", o0."attempt", o0."attempted_by", o0."max_attempts", o0."priority", o0."attempted_at", o0."cancelled_at", o0."completed_at", o0."discarded_at", o0."inserted_at", o0."scheduled_at", o0."id" FROM "oban_jobs" AS o0 WHERE (o0."id" = ?) [184030] 13:36:09.568 [debug] QUERY OK source="settings" db=0.7ms queue=0.1ms idle=81.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:36:09.569 [debug] QUERY OK source="settings" db=0.4ms queue=0.1ms idle=7.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:36:09.570 [debug] QUERY OK source="settings" db=0.3ms idle=5.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:36:09.573 [debug] QUERY OK source="media_profiles" db=1.0ms idle=7.0ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:36:09.577 [info] Sent 200 in 17ms 13:36:12.739 [info] {"source":"oban","duration":2205,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:36:13.685 [info] GET /sources/15 13:36:13.685 [debug] Processing with PinchflatWeb.Sources.SourceController.show/2 Parameters: %{"id" => "15"} Pipelines: [:browser] 13:36:13.687 [debug] QUERY OK source="sources" db=0.4ms idle=947.5ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [15] 13:36:13.689 [debug] QUERY OK source="media_profiles" db=1.1ms queue=0.2ms idle=425.5ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:36:13.689 [info] GET /sources/1/edit 13:36:13.689 [debug] Processing with PinchflatWeb.Sources.SourceController.edit/2 Parameters: %{"id" => "1"} Pipelines: [:browser] 13:36:13.691 [debug] QUERY OK source="tasks" db=1.0ms queue=0.3ms idle=427.5ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at" FROM "tasks" AS t0 INNER JOIN "oban_jobs" AS o1 ON o1."id" = t0."job_id" WHERE (t0."source_id" = ?) AND (o1."state" IN (?,?,?,?)) [15, "executing", "available", "scheduled", "retryable"] 13:36:13.691 [debug] QUERY OK source="sources" db=1.1ms queue=0.1ms idle=428.2ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 13:36:13.692 [debug] QUERY OK source="oban_jobs" db=0.5ms queue=0.1ms idle=193.8ms SELECT o0."id", o0."state", o0."queue", o0."worker", o0."args", o0."meta", o0."tags", o0."errors", o0."attempt", o0."attempted_by", o0."max_attempts", o0."priority", o0."attempted_at", o0."cancelled_at", o0."completed_at", o0."discarded_at", o0."inserted_at", o0."scheduled_at", o0."id" FROM "oban_jobs" AS o0 WHERE (o0."id" IN (?,?)) [202983, 202175] 13:36:13.693 [debug] QUERY OK source="settings" db=0.2ms idle=3.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:36:13.693 [debug] QUERY OK source="media_profiles" db=1.0ms idle=5.2ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at" FROM "media_profiles" AS m0 ORDER BY m0."name" [] 13:36:13.694 [debug] QUERY OK source="settings" db=0.6ms idle=2.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:36:13.694 [debug] QUERY OK source="settings" db=1.0ms idle=2.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:36:13.695 [debug] QUERY OK source="settings" db=0.8ms idle=2.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:36:13.696 [debug] QUERY OK source="settings" db=1.2ms queue=0.1ms idle=1.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:36:13.697 [debug] QUERY OK source="settings" db=0.3ms idle=3.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:36:13.699 [debug] QUERY OK source="sources" db=0.7ms idle=4.7ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [15] 13:36:13.701 [info] Sent 200 in 11ms 13:36:13.710 [debug] QUERY OK source="media_items" db=10.2ms idle=5.4ms SELECT count(m0."id") FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [15] 13:36:13.719 [debug] QUERY OK source="media_items" db=8.7ms idle=15.6ms SELECT m0."id", m0."title", m0."uploaded_at", m0."prevent_download", m0."last_error" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) ORDER BY m0."uploaded_at" DESC LIMIT ? OFFSET ? [15, 10, 0] 13:36:13.721 [debug] QUERY OK source="sources" db=0.3ms idle=24.3ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [15] 13:36:13.723 [debug] QUERY OK source="media_items" db=1.9ms queue=0.1ms idle=24.2ms SELECT count(m0."id") FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND NOT (m0."media_filepath" IS NULL)) [15] 13:36:13.727 [debug] QUERY OK source="media_items" db=3.6ms queue=0.1ms idle=24.1ms SELECT m0."id", m0."title", m0."uploaded_at", m0."prevent_download", m0."last_error" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND NOT (m0."media_filepath" IS NULL)) ORDER BY m0."uploaded_at" DESC LIMIT ? OFFSET ? [15, 10, 0] 13:36:13.729 [debug] QUERY OK source="sources" db=0.4ms idle=18.5ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [15] 13:36:13.732 [debug] QUERY OK source="media_items" db=2.9ms idle=9.9ms SELECT count(m0."id") FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds"))))) [15] 13:36:13.743 [debug] QUERY OK source="media_items" db=9.4ms idle=12.3ms SELECT m0."id", m0."title", m0."uploaded_at", m0."prevent_download", m0."last_error" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds"))))) ORDER BY m0."uploaded_at" DESC LIMIT ? OFFSET ? [15, 10, 0] 13:36:13.745 [info] Sent 200 in 60ms 13:36:21.062 [info] GET /sources/15/edit 13:36:21.062 [debug] Processing with PinchflatWeb.Sources.SourceController.edit/2 Parameters: %{"id" => "15"} Pipelines: [:browser] 13:36:21.063 [info] GET /sources/24/edit 13:36:21.063 [debug] Processing with PinchflatWeb.Sources.SourceController.edit/2 Parameters: %{"id" => "24"} Pipelines: [:browser] 13:36:21.064 [debug] QUERY OK source="sources" db=0.7ms queue=0.1ms idle=1801.2ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [15] 13:36:21.064 [debug] QUERY OK source="sources" db=0.5ms idle=1801.9ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [24] 13:36:21.065 [debug] QUERY OK source="media_profiles" db=0.5ms queue=0.1ms idle=1802.5ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at" FROM "media_profiles" AS m0 ORDER BY m0."name" [] 13:36:21.065 [debug] QUERY OK source="media_profiles" db=0.4ms idle=1548.3ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at" FROM "media_profiles" AS m0 ORDER BY m0."name" [] 13:36:21.065 [debug] QUERY OK source="settings" db=0.2ms idle=545.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:36:21.066 [debug] QUERY OK source="settings" db=0.7ms idle=1.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:36:21.067 [debug] QUERY OK source="settings" db=0.8ms idle=1.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:36:21.068 [debug] QUERY OK source="settings" db=1.3ms queue=0.2ms idle=1.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:36:21.069 [debug] QUERY OK source="settings" db=1.0ms queue=0.1ms idle=2.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:36:21.070 [debug] QUERY OK source="settings" db=0.4ms queue=0.4ms idle=3.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:36:21.074 [info] Sent 200 in 12ms 13:36:21.076 [info] Sent 200 in 13ms 13:36:40.589 [info] {"args":{"id":6},"id":202979,"meta":{},"system_time":1767407800589265601,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 13:36:40.590 [debug] QUERY OK source="sources" db=0.6ms idle=327.6ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [6] 13:36:40.591 [debug] QUERY OK source="settings" db=0.4ms idle=328.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:36:40.592 [debug] QUERY OK source="media_profiles" db=0.5ms idle=329.4ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:36:40.592 [debug] QUERY OK source="settings" db=0.4ms idle=10.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:36:40.593 [debug] Fetching recent media IDs from YouTube API for playlist: UUg0m_Ah8P_MQbnn77-vYnYw 13:36:40.593 [debug] QUERY OK source="settings" db=0.1ms idle=4.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:36:40.593 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 13:36:41.110 [debug] QUERY OK source="media_items" db=3.7ms idle=516.2ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND m0."media_id" IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [6, "9i6Qm3LV89c", "2PC3HH4izX4", "dJLpdoPNdZ8", "lqRHAbkn9bo", "nlYgNjtr904", "uHKLZ8LcCJA", "V3LW3EWUxqE", "XaTvV6zJEXk", "AjnHxtnxMhk", "vuJTLm11QmQ", "vUzRuvCi6lw", "NlxSd2y_gfI", "ivcFXtMGdE8", "m17ugzx_Ab4", "o5QiLKbHeMI", "moqdU9sMrRk", "Yi55tGTEMqQ", "rHliVvnQ5Pg", "nCZSTFM-v9k", "uasm2RENDH4", "musiLNtEyRY", "uSvqlME0IsI", "Yo0hmtg8LNc", "HOFD3h9Up9w", "uibJMXaSB7c", "NGq1EoY_r2I", "IL-UZlbO3zI", "-_txeeBP6dg", "iH7BiZvsczM", "rIKuiZVHfZo", "HRw20b6hb_s", "xOQPha-de4A", "L6IXwj-_X1k", "_7--BDD2pxk", "Xaq53-12iW8", "bfb-ZBwdvpo", "3DLbHio3ivA", "xhpwyar65ms", "UzEr8RISXds", "tHU6PeO4WDs", "2z1AaBGzA1g", "y-t3hyj7Mz8", "5ZUXEQ6d0dM", "pn8GF5HaKZc", "wH3XASrC2DA", "C_oeOAG0G5E", "c8gYHg1lZCg", "cPEXUpZ6CWk", "jST7T0L_k_w", ...] 13:36:41.115 [debug] QUERY OK source="media_items" db=3.5ms idle=520.7ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [6] 13:36:41.119 [debug] QUERY OK source="tasks" db=0.6ms idle=525.0ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [203003, 6, ~U[2026-01-03 02:36:41Z], ~U[2026-01-03 02:36:41Z]] 13:36:41.120 [info] {"args":{"id":6},"id":202979,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":530146,"event":"job:stop","queue_time":409476,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 13:36:42.742 [info] {"source":"oban","duration":1987,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:36:47.610 [info] {"args":{"id":10},"id":202980,"meta":{},"system_time":1767407807609707060,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 13:36:47.610 [debug] QUERY OK source="sources" db=0.4ms idle=1348.3ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [10] 13:36:47.611 [debug] QUERY OK source="settings" db=0.4ms idle=1349.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:36:47.612 [debug] QUERY OK source="media_profiles" db=0.6ms idle=1014.3ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:36:47.613 [debug] QUERY OK source="settings" db=0.4ms idle=10.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:36:47.613 [debug] Fetching recent media IDs from YouTube API for playlist: UUmHz7DQbbkcY_UoWY8bBJLw 13:36:47.614 [debug] QUERY OK source="settings" db=0.3ms idle=4.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:36:47.614 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 13:36:47.978 [debug] QUERY OK source="media_items" db=2.7ms idle=363.9ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND m0."media_id" IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [10, "PhjtM9ePmYY", "BYRqpIciNLg", "KKoDQ42Fcpk", "AifAIqHezb8", "sjsS60OTXSQ", "KVouvdlUtGQ", "Th4RJNVZN3Q", "a9Zj-iWYC4w", "Z2_oFD9DMd0", "OW9WywZF_d4", "hFSwWzxrqUA", "XsPrNwyLDJM", "9NUcKPnPMEw", "GvP1jo9RstE", "8jul3DEwgMY", "e4K0Co-JeKQ", "wxoYf3KBlis", "YFQm8Hk73ug", "iu5rnQkfO6M", "RESslu3Bhuk", "vn9VDbacUgQ", "mLozqDnhqpQ", "GWXCCBsOMSg", "OXIpbrvFxfE", "hbZb1Q0mM7k", "lj2JTO1L1Tc", "dGjMw1SkmjU", "vBQFfmlTK_4", "91WqepC8kS0", "UUZfxQhKmfA", "aPsq5nqvhxg", "AJ7atBkisOU", "2fZ0nkP5dfo", "qKZXQGCLRJY", "F26dxTMmW10", "cYPuhhATDXc", "uLrOyIpjkZ8", "kDu56nXRqGQ", "I4lBTlClwww", "h23xksD0dN0", "SgameZUfeGo", "NPgbgiRJCxA", "-v88e4T8i_E", "HkgV_-nJOuE", "3h1vM0lIrpM", "gjExqY_iB38", "5ScP_aPBEiQ", "t5CkW-CKTZs", "gKKRYcy4BbU", ...] 13:36:47.982 [debug] QUERY OK source="settings" db=0.6ms queue=0.1ms idle=369.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:36:47.982 [debug] QUERY OK source="settings" db=0.2ms idle=369.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:36:47.982 [debug] Running yt-dlp command for action: get_media_attributes 13:36:47.984 [debug] QUERY OK source="settings" db=0.2ms idle=370.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:36:47.985 [debug] QUERY OK source="settings" db=0.2ms idle=370.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:36:47.985 [debug] QUERY OK source="settings" db=0.2ms idle=7.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:36:47.986 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=Z2_oFD9DMd0 --simulate --skip-download --output /downloads/Switch Angel/Season %(upload_date>%Y)S/s%(upload_date>%Y)Se%(upload_date>%m%d)S00 - %(title)S.%(ext)S --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --print-to-file %(.{id,title,live_status,original_url,description,aspect_ratio,duration,upload_date,timestamp,playlist_index,filename})j /tmp/pinchflat/data/9a/92/9a92db9096267cf2e5446c35fda4a542a1079e77fee6e1e5b4bbf7bf2bedf887.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 13:36:52.863 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=Z2_oFD9DMd0 --simulate --skip-download --output /downloads/Switch Angel/Season %(upload_date>%Y)S/s%(upload_date>%Y)Se%(upload_date>%m%d)S00 - %(title)S.%(ext)S --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --print-to-file %(.{id,title,live_status,original_url,description,aspect_ratio,duration,upload_date,timestamp,playlist_index,filename})j /tmp/pinchflat/data/9a/92/9a92db9096267cf2e5446c35fda4a542a1079e77fee6e1e5b4bbf7bf2bedf887.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 1 with: ERROR: [youtube] Z2_oFD9DMd0: This live event will begin in a few moments. 13:36:52.864 [error] Error creating media item 'Z2_oFD9DMd0' from URL: {:error, "ERROR: [youtube] Z2_oFD9DMd0: This live event will begin in a few moments.\n", 1} 13:36:52.867 [debug] QUERY OK source="media_items" db=2.7ms queue=0.1ms idle=1602.4ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [10] 13:36:52.872 [debug] QUERY OK source="tasks" db=1.0ms idle=1252.3ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [203004, 10, ~U[2026-01-03 02:36:52Z], ~U[2026-01-03 02:36:52Z]] 13:36:52.874 [info] {"args":{"id":10},"id":202980,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":5263359,"event":"job:stop","queue_time":135295,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 13:36:56.435 [info] GET /sources/21/media/59038/force_download 13:36:56.436 [debug] QUERY OK source="settings" db=0.7ms idle=806.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:36:56.437 [debug] QUERY OK source="settings" db=0.6ms idle=174.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:36:56.437 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 13:36:56.438 [info] GET /sources/21/media/58999/force_download 13:36:56.437 [error] #PID<0.10470.0> running PinchflatWeb.Endpoint (connection #PID<0.10468.0>, stream id 1) terminated Server: pinchflat.uiau7e.uncld.dev:80 (http) Request: GET /sources/21/media/59038/force_download ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/21/media/59038/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.10468.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/21/media/59038/force_download", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 56244}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, zstd, deflate", "host" => "pinchflat.uiau7e.uncld.dev", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)", "via" => "2.0 Caddy", "x-forwarded-for" => "216.73.216.126", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.uiau7e.uncld.dev", method: "GET", owner: #PID<0.10470.0>, params: %{}, path_info: ["sources", "21", "media", "59038", "force_download"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.uiau7e.uncld.dev", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {10, 210, 0, 2}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"accept-encoding", "gzip, br, zstd, deflate"}, {"host", "pinchflat.uiau7e.uncld.dev"}, {"user-agent", "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)"}, {"via", "2.0 Caddy"}, {"x-forwarded-for", "216.73.216.126"}, {"x-forwarded-host", "pinchflat.uiau7e.uncld.dev"}, {"x-forwarded-proto", "https"} ], request_path: "/sources/21/media/59038/force_download", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GIcYC3_bBxQmt-8AAIMj"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.10468.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/21/media/59038/force_download", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 56244}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, zstd, deflate", "host" => "pinchflat.uiau7e.uncld.dev", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)", "via" => "2.0 Caddy", "x-forwarded-for" => "216.73.216.126", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/21/media/59038/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.10468.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/21/media/59038/force_download", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 56244}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, zstd, deflate", "host" => "pinchflat.uiau7e.uncld.dev", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)", "via" => "2.0 Caddy", "x-forwarded-for" => "216.73.216.126", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.uiau7e.uncld.dev", method: "GET", owner: #PID<0.10470.0>, params: %{}, path_info: ["sources", "21", "media", "59038", "force_download"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.uiau7e.uncld.dev", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {10, 210, 0, 2}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"accept-encoding", "gzip, br, zstd, deflate"}, {"host", "pinchflat.uiau7e.uncld.dev"}, {"user-agent", "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)"}, {"via", "2.0 Caddy"}, {"x-forwarded-for", "216.73.216.126"}, (truncated) 13:36:56.440 [debug] QUERY OK source="settings" db=0.7ms queue=0.1ms idle=177.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:36:56.441 [debug] QUERY OK source="settings" db=0.6ms idle=179.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:36:56.441 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 13:36:56.442 [error] #PID<0.10471.0> running PinchflatWeb.Endpoint (connection #PID<0.10469.0>, stream id 1) terminated Server: pinchflat.uiau7e.uncld.dev:80 (http) Request: GET /sources/21/media/58999/force_download ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/21/media/58999/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.10469.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/21/media/58999/force_download", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 56236}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, zstd, deflate", "host" => "pinchflat.uiau7e.uncld.dev", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)", "via" => "2.0 Caddy", "x-forwarded-for" => "216.73.216.126", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.uiau7e.uncld.dev", method: "GET", owner: #PID<0.10471.0>, params: %{}, path_info: ["sources", "21", "media", "58999", "force_download"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.uiau7e.uncld.dev", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {10, 210, 0, 2}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"accept-encoding", "gzip, br, zstd, deflate"}, {"host", "pinchflat.uiau7e.uncld.dev"}, {"user-agent", "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)"}, {"via", "2.0 Caddy"}, {"x-forwarded-for", "216.73.216.126"}, {"x-forwarded-host", "pinchflat.uiau7e.uncld.dev"}, {"x-forwarded-proto", "https"} ], request_path: "/sources/21/media/58999/force_download", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GIcYC4AU9GKN8BwAAe5h"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.10469.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/21/media/58999/force_download", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 56236}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, zstd, deflate", "host" => "pinchflat.uiau7e.uncld.dev", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)", "via" => "2.0 Caddy", "x-forwarded-for" => "216.73.216.126", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/21/media/58999/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.10469.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/21/media/58999/force_download", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 56236}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, zstd, deflate", "host" => "pinchflat.uiau7e.uncld.dev", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)", "via" => "2.0 Caddy", "x-forwarded-for" => "216.73.216.126", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.uiau7e.uncld.dev", method: "GET", owner: #PID<0.10471.0>, params: %{}, path_info: ["sources", "21", "media", "58999", "force_download"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.uiau7e.uncld.dev", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {10, 210, 0, 2}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"accept-encoding", "gzip, br, zstd, deflate"}, {"host", "pinchflat.uiau7e.uncld.dev"}, {"user-agent", "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)"}, {"via", "2.0 Caddy"}, {"x-forwarded-for", "216.73.216.126"}, (truncated) 13:37:00.167 [info] {"source":"oban","duration":613,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 13:37:04.667 [info] {"args":{"id":9},"id":202981,"meta":{},"system_time":1767407824667260621,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 13:37:04.668 [debug] QUERY OK source="sources" db=1.0ms idle=405.6ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [9] 13:37:04.669 [debug] QUERY OK source="settings" db=0.5ms idle=406.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:37:04.670 [debug] QUERY OK source="media_profiles" db=0.6ms idle=407.6ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:37:04.671 [debug] QUERY OK source="settings" db=0.7ms idle=11.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:37:04.671 [debug] Fetching recent media IDs from YouTube API for playlist: UUy0Pr5u-MwGXXzp_GDd4m_g 13:37:04.672 [debug] QUERY OK source="settings" db=0.3ms queue=0.1ms idle=4.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:37:04.672 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 13:37:05.276 [debug] QUERY OK source="media_items" db=2.7ms idle=604.7ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND m0."media_id" IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [9, "97DBlIPSMkI", "V7Q9VnfzRqE", "Nub2m3iioSw", "Tpk6NNZubqU", "L4Eh-MtBFFk", "sa8p75KJqOc", "2gpPC0vsry0", "B2l4YfAav6M", "iL1qKxcaZnU", "NH5AAcLn03o", "8fOaCUvVQpY", "8aQ7sJ9EyaY", "ld0ngHU3YQ0", "uKzsA5kc8jw", "_A1dxw_T6dw", "TFVA0Bc5ajA", "IgFSOa0RBxs", "fGAe2cenBhs", "a6_0p8e42Y4", "vnR7jnJYN-k", "db6_ragog48", "SMKDYoXrZzw", "-fM_uGwlRlU", "kRxJ2g3T0zs", "GgU7L-z0kbA", "yFZJ6Qb8mDY", "YkyTbtgcfJU", "k01ARI01oMU", "ToFKhGfGgc0", "MU8JlJIuwh4", "IY36QIh6VG8", "brtcZFHW0P4", "A39Glu9I9fk", "Ib_1jixUkLw", "c9UIDwF7oS4", "CcSE-YHRJP4", "Tpmb_mTKuhs", "yNbz6f5dMLE", "BAVQcOWZi-Y", "Fa7RxeYNUTw", "teIoBQdGT5s", "UqykI_3CT-g", "vBeWkDTK6Eg", "qOp_nyKqmic", "fEqSlPpXHYk", "lII4lxNpPVg", "BaxD8BI3wI4", "me_afppRbyI", "C69B2k3fAvs", ...] 13:37:05.281 [debug] QUERY OK source="media_items" db=3.4ms idle=608.7ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [9] 13:37:05.285 [debug] QUERY OK source="tasks" db=0.4ms idle=612.6ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [203005, 9, ~U[2026-01-03 02:37:05Z], ~U[2026-01-03 02:37:05Z]] 13:37:05.286 [info] {"args":{"id":9},"id":202981,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":618625,"event":"job:stop","queue_time":479122,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 13:37:12.746 [info] {"source":"oban","duration":3464,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:37:12.876 [info] GET /media/76d27fb3-39bb-41a2-8e6c-655183892ebe/stream 13:37:12.876 [info] GET /sources/18/media/59071/force_download 13:37:12.876 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.stream/2 Parameters: %{"uuid" => "76d27fb3-39bb-41a2-8e6c-655183892ebe"} Pipelines: [:maybe_basic_auth] 13:37:12.877 [debug] QUERY OK source="settings" db=0.7ms idle=1614.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:37:12.877 [debug] QUERY OK source="media_items" db=1.0ms idle=1614.6ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."uuid" = ?) ["76d27fb3-39bb-41a2-8e6c-655183892ebe"] 13:37:12.878 [debug] QUERY OK source="settings" db=0.5ms idle=1197.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:37:12.878 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 13:37:12.879 [error] #PID<0.10476.0> running PinchflatWeb.Endpoint (connection #PID<0.10474.0>, stream id 1) terminated Server: pinchflat.uiau7e.uncld.dev:80 (http) Request: GET /sources/18/media/59071/force_download ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/18/media/59071/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.10474.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/18/media/59071/force_download", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 58660}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, zstd, deflate", "host" => "pinchflat.uiau7e.uncld.dev", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)", "via" => "2.0 Caddy", "x-forwarded-for" => "216.73.216.126", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.uiau7e.uncld.dev", method: "GET", owner: #PID<0.10476.0>, params: %{}, path_info: ["sources", "18", "media", "59071", "force_download"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.uiau7e.uncld.dev", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {10, 210, 0, 2}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"accept-encoding", "gzip, br, zstd, deflate"}, {"host", "pinchflat.uiau7e.uncld.dev"}, {"user-agent", "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)"}, {"via", "2.0 Caddy"}, {"x-forwarded-for", "216.73.216.126"}, {"x-forwarded-host", "pinchflat.uiau7e.uncld.dev"}, {"x-forwarded-proto", "https"} ], request_path: "/sources/18/media/59071/force_download", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GIcYD1PWW80o66MAAIND"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.10474.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/18/media/59071/force_download", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 58660}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, zstd, deflate", "host" => "pinchflat.uiau7e.uncld.dev", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)", "via" => "2.0 Caddy", "x-forwarded-for" => "216.73.216.126", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/18/media/59071/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.10474.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/18/media/59071/force_download", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 58660}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, zstd, deflate", "host" => "pinchflat.uiau7e.uncld.dev", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)", "via" => "2.0 Caddy", "x-forwarded-for" => "216.73.216.126", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.uiau7e.uncld.dev", method: "GET", owner: #PID<0.10476.0>, params: %{}, path_info: ["sources", "18", "media", "59071", "force_download"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.uiau7e.uncld.dev", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {10, 210, 0, 2}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"accept-encoding", "gzip, br, zstd, deflate"}, {"host", "pinchflat.uiau7e.uncld.dev"}, {"user-agent", "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)"}, {"via", "2.0 Caddy"}, {"x-forwarded-for", "216.73.216.126"}, (truncated) 13:37:12.898 [debug] Invalid range request for media item: 76d27fb3-39bb-41a2-8e6c-655183892ebe - serving full file 13:37:12.898 [info] Sent 200 in 21ms 13:37:14.741 [info] GET /sources/17/media/10262 13:37:14.742 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "10262", "source_id" => "17"} Pipelines: [:browser] 13:37:14.743 [debug] QUERY OK source="media_items" db=0.3ms queue=0.2ms idle=480.8ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [10262] 13:37:14.744 [debug] QUERY OK source="tasks" db=0.4ms queue=0.1ms idle=482.1ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [10262] 13:37:14.745 [debug] QUERY OK source="sources" db=0.6ms idle=482.5ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [17] 13:37:14.746 [debug] QUERY OK source="settings" db=0.2ms queue=0.1ms idle=484.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:37:14.747 [debug] QUERY OK source="settings" db=0.3ms queue=0.1ms idle=55.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:37:14.749 [debug] QUERY OK source="settings" db=0.2ms queue=0.1ms idle=5.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:37:14.751 [debug] QUERY OK source="media_profiles" db=0.2ms idle=6.2ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:37:14.755 [info] Sent 200 in 13ms 13:37:21.717 [info] {"args":{"id":11},"id":202982,"meta":{},"system_time":1767407841717175780,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 13:37:21.717 [debug] QUERY OK source="sources" db=0.3ms idle=1450.6ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [11] 13:37:21.719 [debug] QUERY OK source="settings" db=1.0ms idle=1451.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:37:21.720 [debug] QUERY OK source="media_profiles" db=0.9ms idle=1015.2ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:37:21.720 [debug] QUERY OK source="settings" db=0.2ms idle=12.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:37:21.721 [debug] Fetching recent media IDs from YouTube API for playlist: UUJ901NqoRaXMnIm7aOjLyuA 13:37:21.721 [debug] QUERY OK source="settings" db=0.3ms idle=4.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:37:21.721 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 13:37:22.265 [debug] QUERY OK source="media_items" db=5.0ms idle=541.8ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND m0."media_id" IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [11, "1ji7g8qZJ_4", "xP5WmZg7OMg", "HBoV87Jndh8", "-zpzRklxMEo", "9AX85j6Lp4M", "p2U9d4FWDaI", "hfT6XVSa2xE", "qBOKYwe8NzA", "Cf5jL5JNq7k", "bAV0y2acB9c", "XE6JvrChQ_Q", "Efv456Ks9ms", "qgiJ4C5s46U", "KaVC_mTFqHk", "M6gat-hai0I", "_xwFJzOtQv0", "Ao-M_YvfhXY", "SKHWQwf0ago", "gmuFtWZG3v8", "H4oeJ87TMt4", "rS2fDo6mhS8", "aOF6Pe_bTeI", "x8B3Z91qkoE", "fVvYTWAHoBQ", "8r6xqWTqcPQ", "k677A--BwGE", "CSTtrz8t1eg", "w6Ej3Iim4Ic", "jO8S8_KX6p0", "tslsVdOjWFM", "dckL2BCDYmQ", "E3N8_pRRtGM", "qeOEDUgy5xA", "MIPvNqPwMxc", "V2GelRPp5fg", "jWH5H6Y6T-A", "1ObIAwtqt9k", "yVdv1xVggZ4", "Pxpz4211gMI", "UEUAHI0AZu4", "gitCR-iTofw", "eTg2rHYqUZc", "QnOIm4U7Dzs", "RYNFRbP4OWQ", "R3kNCz120XM", "vMflt2fJZYw", "4DkhBa_L_4E", "4IqFTPw6Mzk", "AepfCktyPLk", ...] 13:37:22.278 [debug] QUERY OK source="media_items" db=11.6ms idle=547.8ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [11] 13:37:22.284 [debug] QUERY OK source="tasks" db=1.0ms idle=18.7ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [203006, 11, ~U[2026-01-03 02:37:22Z], ~U[2026-01-03 02:37:22Z]] 13:37:22.286 [info] {"args":{"id":11},"id":202982,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":567725,"event":"job:stop","queue_time":356786,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 13:37:42.749 [info] {"source":"oban","duration":2491,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:37:55.481 [info] GET /sources/21/media/58999 13:37:55.481 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "58999", "prevent_download" => "true", "source_id" => "21"} Pipelines: [:browser] 13:37:55.482 [debug] QUERY OK source="media_items" db=1.2ms idle=1214.4ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [58999] 13:37:55.484 [debug] QUERY OK source="tasks" db=0.6ms idle=1216.2ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [58999] 13:37:55.484 [debug] QUERY OK source="sources" db=1.1ms idle=1216.3ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [21] 13:37:55.485 [debug] QUERY OK source="oban_jobs" db=0.7ms idle=1217.8ms SELECT o0."id", o0."state", o0."queue", o0."worker", o0."args", o0."meta", o0."tags", o0."errors", o0."attempt", o0."attempted_by", o0."max_attempts", o0."priority", o0."attempted_at", o0."cancelled_at", o0."completed_at", o0."discarded_at", o0."inserted_at", o0."scheduled_at", o0."id" FROM "oban_jobs" AS o0 WHERE (o0."id" = ?) [202139] 13:37:55.486 [debug] QUERY OK source="settings" db=0.4ms idle=673.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:37:55.487 [debug] QUERY OK source="settings" db=0.4ms idle=4.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:37:55.488 [debug] QUERY OK source="settings" db=0.5ms idle=3.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:37:55.490 [debug] QUERY OK source="media_profiles" db=0.6ms idle=4.5ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:37:55.510 [info] Sent 200 in 29ms 13:38:00.169 [info] {"source":"oban","duration":595,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 13:38:00.839 [info] {"args":{"id":15},"id":202983,"meta":{},"system_time":1767407880838860264,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 13:38:00.840 [debug] QUERY OK source="sources" db=0.7ms queue=0.1ms idle=1572.1ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [15] 13:38:00.841 [debug] QUERY OK source="settings" db=0.7ms queue=0.1ms idle=1015.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:38:00.842 [debug] QUERY OK source="media_profiles" db=0.6ms queue=0.1ms idle=672.3ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:38:00.843 [debug] QUERY OK source="settings" db=0.5ms queue=0.1ms idle=12.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:38:00.843 [debug] Fetching recent media IDs from YouTube API for playlist: UU5qRAYQmCLx8hFGIiTWSQvA 13:38:00.844 [debug] QUERY OK source="settings" db=0.2ms queue=0.1ms idle=5.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:38:00.844 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 13:38:01.293 [debug] QUERY OK source="media_items" db=3.1ms idle=448.7ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND m0."media_id" IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [15, "EMmIdkwn6a4", "EBT3EIoJpDc", "P2j2jM33fbk", "KuYhCywx8JM", "EteM8YNAFu8", "-KN9sfrroJA", "35D6yzUQM8I", "pIqvmN8ePkc", "rR5RqL2cjPE", "B2mmx85ZIsE", "b-jTeTJ1ekk", "Qa4dYWqfgmg", "TZZgrQEsl4c", "hMFEigXIhgA", "yf8ozrYeFEk", "QoCmQRZKU_c", "Qa9rFTiItTE", "Kxw9tq49VBM", "aLj4QgEf7gQ", "-D7c5td5vhw", "UNJUpex0blc", "Afa2PJq3okY", "r9A1srY7LdU", "m6YZoOWrLlk", "RKSlnQcuZt4", "qEjkDPJmKIo", "fZirHVq8wp0", "jdB56zAMJgE", "F92Oe7JuDtI", "luEgOCX58gw", "9CkNfdQpsuo", "eC3Mv474A8c", "mq6lsIgLLqY", "Wqmn4OTW6Fw", "4yYMQFLVRNc", "TsdMEmH2Lsw", "HQeTYLxz6iY", "V-JtebgnFoM", "2cXS3i36Kh8", "wznCZtGitN8", "2tYVGxZMOiQ", "9bxljq6ljbE", "9hHVjpo_HDA", "w8bqGx4ZtYQ", "yFYGd9irJ5k", "WTfhL2-cT1U", "LCR3ZsqWhuo", "Tj09jojsiaM", "_GZvVqjqlM0", ...] 13:38:01.302 [debug] QUERY OK source="media_items" db=5.0ms idle=455.7ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [15] 13:38:01.306 [debug] QUERY OK source="tasks" db=0.5ms idle=460.9ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [203007, 15, ~U[2026-01-03 02:38:01Z], ~U[2026-01-03 02:38:01Z]] 13:38:01.307 [info] {"args":{"id":15},"id":202983,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":467474,"event":"job:stop","queue_time":461601,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 13:38:05.854 [info] {"args":{"id":18},"id":202984,"meta":{},"system_time":1767407885854690671,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 13:38:05.855 [debug] QUERY OK source="sources" db=0.4ms queue=0.1ms idle=588.1ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [18] 13:38:05.856 [debug] QUERY OK source="settings" db=0.4ms queue=0.1ms idle=589.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:38:05.857 [debug] QUERY OK source="media_profiles" db=0.3ms idle=589.8ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:38:05.858 [debug] QUERY OK source="settings" db=0.3ms queue=0.1ms idle=10.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:38:05.858 [debug] Fetching recent media IDs from YouTube API for playlist: UUuisDAMnvHMYuLFRedMgmVw 13:38:05.859 [debug] QUERY OK source="settings" db=0.2ms queue=0.1ms idle=4.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:38:05.859 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 13:38:06.296 [debug] QUERY OK source="media_items" db=4.0ms idle=435.7ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND m0."media_id" IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [18, "mf2Em7F_qDM", "PjvBtlIGGQU", "EF_PO-pALOQ", "j9eh7huEF4A", "y3FGuwfGzL0", "ZWH_eu9wdUE", "UccWWifa8jA", "0L8xWydKOhk", "CkSloYV3ay4", "SkQ7ywGW2HY", "QM3qu001Xdk", "jOTurZWIEmw", "pojDco-WhA4", "GD19Y1VYBKY", "cvViWSBLu-U", "wXm5ocXv9ho", "uB1Tk9eXQbk", "I7vb-PGArW4", "0h9qvAA5dfQ", "7yx-SecBATo", "oj1ySj7TVJk", "dtTdjRB4Q4g", "mpfcVNb8Mhs", "D3MFnCKv2Mc", "458_RTLWN2E", "W26HiyQ5k1s", "w4NDxPYJs1I", "cxuEV05UN7U", "5cPjR5FVDOw", "nJhbZNSrP4c", "X9Eu7mui35E", "wrgZHIpa6F0", "JEN7jfNqy1A", "v31DYiS2LbY", "iJfD5wWLvuM", "qPVTMbiyPLE", "rM_nvsztYlw", "IoD1j3ZG-SQ", "DDnqxbWvIgQ", "HIhF6C1yc7M", "DlNIxjiqQvs", "JO0-kOXXMEw", "2DihqSsed3w", "uDlvlF5iKz8", "v2jg_5WZ41o", "JekH9K8_SS8", "xVV_6qW_Ho8", "qYOABpvD49s", "VAw8zvyLmfE", ...] 13:38:06.301 [debug] QUERY OK source="media_items" db=2.4ms idle=442.5ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [18] 13:38:06.305 [debug] QUERY OK source="tasks" db=0.4ms idle=445.4ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [203008, 18, ~U[2026-01-03 02:38:06Z], ~U[2026-01-03 02:38:06Z]] 13:38:06.306 [info] {"args":{"id":18},"id":202984,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":450698,"event":"job:stop","queue_time":480196,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 13:38:12.753 [info] {"source":"oban","duration":2717,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:38:13.816 [info] GET /sources/17/media/39302 13:38:13.817 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "39302", "source_id" => "17"} Pipelines: [:browser] 13:38:13.818 [debug] QUERY OK source="media_items" db=0.5ms queue=0.1ms idle=1550.1ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [39302] 13:38:13.819 [debug] QUERY OK source="tasks" db=0.4ms idle=1551.2ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [39302] 13:38:13.819 [debug] QUERY OK source="sources" db=1.0ms idle=1551.3ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [17] 13:38:13.820 [debug] QUERY OK source="settings" db=0.2ms idle=1066.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:38:13.821 [debug] QUERY OK source="settings" db=0.2ms idle=940.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:38:13.822 [debug] QUERY OK source="settings" db=0.3ms idle=3.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:38:13.823 [debug] QUERY OK source="media_profiles" db=0.2ms idle=4.0ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:38:13.826 [info] Sent 200 in 9ms 13:38:16.898 [info] {"args":{"id":16},"id":202985,"meta":{},"system_time":1767407896898495503,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 13:38:16.899 [debug] QUERY OK source="sources" db=0.9ms idle=1631.8ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [16] 13:38:16.900 [debug] QUERY OK source="settings" db=0.6ms idle=1633.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:38:16.902 [debug] QUERY OK source="media_profiles" db=1.0ms idle=1014.8ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:38:16.902 [debug] QUERY OK source="settings" db=0.6ms idle=13.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:38:16.903 [debug] Fetching recent media IDs from YouTube API for playlist: UUPPfK7Nq_yQR84rn1wcTXBg 13:38:16.903 [debug] QUERY OK source="settings" db=0.3ms idle=4.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:38:16.903 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 13:38:17.273 [debug] QUERY OK source="media_items" db=5.1ms idle=367.8ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND m0."media_id" IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [16, "BiTNUZ2zONY", "7pVLE7ggkcc", "YAh-xEteBz4", "6hNpMT5OwGo", "vx3oGZYqxm4", "7W_ZSNuS-4w", "CxUC2HXvO84", "RxapAZRYJ6I", "f2ainZL8Tzk", "KJtASaKc95g", "yBCh5cyI0Po", "dg_HQL3GBcY", "ZiVvXPpo0eE", "YO1TnWptv3o", "HwnBnsQBeOA", "CCE2v3oIa74", "OWVPYr9e76Y", "VApJtIyMEec", "XtOIQYVq26o", "gZL1KzV54Cw", "kmU-Eazta1s", "XXthHXEpEP8", "dPw_HkMgYI0", "rxq-TvgNCBU", "SaCbUtTuLhA", "TWLqSk4ZlN0", "p7_rduK5WA0", "lNZ56C-f4a8", "GlK3f1cs_l4", "Yabwyb14-BQ", "WupRwvJ7sOc", "MhpoNL1gZbw", "yUfm6AbtJ0g", "y8zfgIgZ4c0", "gOwjmKMmkV4", "aTiunvocl5c", "KebjX3KEgWQ", "0T2MYXljL5o", "i7sbS92R4cg", "66CDGzjLBtY", "T_W0FWiJmM8", "u_80rUKItGc", "C9_wibbg1Ug", "A4mg1ZUb-7s", "YmUfZt4Ku9s", "DoWsgrlIjYU", "gc5ojxTuwOg", "3AMdPMoGJus", "htYY8VwN-9g", ...] 13:38:17.279 [debug] QUERY OK source="media_items" db=4.0ms idle=374.2ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [16] 13:38:17.283 [debug] QUERY OK source="tasks" db=0.8ms idle=379.4ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [203009, 16, ~U[2026-01-03 02:38:17Z], ~U[2026-01-03 02:38:17Z]] 13:38:17.284 [info] {"args":{"id":16},"id":202985,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":385411,"event":"job:stop","queue_time":561541,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 13:38:42.755 [info] {"source":"oban","duration":1109,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:38:50.312 [info] GET /sources/21/media/59038 13:38:50.312 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "59038", "prevent_download" => "true", "source_id" => "21"} Pipelines: [:browser] 13:38:50.313 [debug] QUERY OK source="media_items" db=0.4ms queue=0.1ms idle=1046.2ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [59038] 13:38:50.315 [debug] QUERY OK source="sources" db=0.4ms idle=1047.6ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [21] 13:38:50.315 [debug] QUERY OK source="tasks" db=0.9ms idle=1047.4ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [59038] 13:38:50.316 [debug] QUERY OK source="oban_jobs" db=0.6ms idle=345.2ms SELECT o0."id", o0."state", o0."queue", o0."worker", o0."args", o0."meta", o0."tags", o0."errors", o0."attempt", o0."attempted_by", o0."max_attempts", o0."priority", o0."attempted_at", o0."cancelled_at", o0."completed_at", o0."discarded_at", o0."inserted_at", o0."scheduled_at", o0."id" FROM "oban_jobs" AS o0 WHERE (o0."id" = ?) [202143] 13:38:50.317 [debug] QUERY OK source="settings" db=0.5ms queue=0.1ms idle=50.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:38:50.318 [debug] QUERY OK source="settings" db=0.4ms idle=3.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:38:50.319 [debug] QUERY OK source="settings" db=0.4ms idle=3.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:38:50.320 [debug] QUERY OK source="media_profiles" db=0.4ms idle=4.7ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:38:50.339 [info] Sent 200 in 26ms 13:38:56.496 [info] GET /media/677907fb-1d07-4505-a30e-a15b263be25d/stream 13:38:56.497 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.stream/2 Parameters: %{"uuid" => "677907fb-1d07-4505-a30e-a15b263be25d"} Pipelines: [:maybe_basic_auth] 13:38:56.498 [debug] QUERY OK source="media_items" db=1.1ms queue=0.1ms idle=515.0ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."uuid" = ?) ["677907fb-1d07-4505-a30e-a15b263be25d"] 13:38:56.522 [debug] Invalid range request for media item: 677907fb-1d07-4505-a30e-a15b263be25d - serving full file 13:38:56.522 [info] Sent 200 in 25ms 13:39:00.174 [info] {"source":"oban","duration":369,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 13:39:03.566 [info] GET /sources/14/media/58722 13:39:03.566 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "58722", "source_id" => "14"} Pipelines: [:browser] 13:39:03.567 [debug] QUERY OK source="media_items" db=0.6ms queue=0.1ms idle=1.3e3ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [58722] 13:39:03.569 [debug] QUERY OK source="tasks" db=0.6ms idle=1301.4ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [58722] 13:39:03.569 [debug] QUERY OK source="sources" db=1.0ms idle=1301.5ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [14] 13:39:03.570 [debug] QUERY OK source="oban_jobs" db=0.5ms idle=505.1ms SELECT o0."id", o0."state", o0."queue", o0."worker", o0."args", o0."meta", o0."tags", o0."errors", o0."attempt", o0."attempted_by", o0."max_attempts", o0."priority", o0."attempted_at", o0."cancelled_at", o0."completed_at", o0."discarded_at", o0."inserted_at", o0."scheduled_at", o0."id" FROM "oban_jobs" AS o0 WHERE (o0."id" = ?) [202046] 13:39:03.571 [debug] QUERY OK source="settings" db=0.5ms queue=0.1ms idle=304.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:39:03.572 [debug] QUERY OK source="settings" db=0.6ms idle=4.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:39:03.573 [debug] QUERY OK source="settings" db=0.5ms idle=3.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:39:03.575 [debug] QUERY OK source="media_profiles" db=0.6ms idle=4.8ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:39:03.598 [info] Sent 200 in 32ms 13:39:08.750 [info] GET / 13:39:08.750 [debug] Processing with PinchflatWeb.Pages.PageController.home/2 Parameters: %{} Pipelines: [:browser] 13:39:08.750 [debug] QUERY OK source="settings" db=0.2ms queue=0.1ms idle=1464.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:39:08.751 [debug] QUERY OK source="media_profiles" db=0.3ms idle=1465.1ms SELECT count(m0."id") FROM "media_profiles" AS m0 [] 13:39:08.752 [debug] QUERY OK source="sources" db=0.3ms idle=1465.6ms SELECT count(s0."id") FROM "sources" AS s0 [] 13:39:08.786 [debug] QUERY OK source="media_items" db=33.8ms idle=1466.1ms SELECT sum(m0."media_size_bytes") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 13:39:08.793 [debug] QUERY OK source="media_items" db=6.7ms idle=692.1ms SELECT count(m0."id") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 13:39:08.793 [debug] QUERY OK source="settings" db=0.2ms idle=42.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:39:08.794 [debug] QUERY OK source="settings" db=0.3ms idle=42.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:39:08.795 [debug] QUERY OK source="settings" db=0.3ms idle=42.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:39:08.799 [debug] QUERY OK source="media_items" db=3.4ms idle=9.6ms SELECT count(m0."id") FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE (NOT (m0."media_filepath" IS NULL)) [] 13:39:08.800 [debug] QUERY OK source="media_items" db=0.6ms idle=6.2ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE (NOT (m0."media_filepath" IS NULL)) ORDER BY m0."id" DESC LIMIT ? OFFSET ? [5, 0] 13:39:08.801 [debug] QUERY OK source="sources" db=0.9ms idle=6.7ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" IN (?,?,?,?)) [18, 21, 15, 24] 13:39:08.877 [debug] QUERY OK source="media_items" db=72.5ms idle=10.1ms SELECT count(m0."id") FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds"))) [] 13:39:08.880 [debug] QUERY OK source="media_items" db=2.1ms queue=0.2ms idle=82.8ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds"))) ORDER BY m0."id" DESC LIMIT ? OFFSET ? [5, 0] 13:39:08.882 [debug] QUERY OK source="sources" db=0.4ms queue=0.1ms idle=82.6ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" IN (?,?)) [27, 5] 13:39:08.889 [debug] QUERY OK source="tasks" db=0.4ms idle=88.4ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", o1."id", o1."state", o1."queue", o1."worker", o1."args", o1."meta", o1."tags", o1."errors", o1."attempt", o1."attempted_by", o1."max_attempts", o1."priority", o1."attempted_at", o1."cancelled_at", o1."completed_at", o1."discarded_at", o1."inserted_at", o1."scheduled_at" FROM "tasks" AS t0 LEFT OUTER JOIN "oban_jobs" AS o1 ON o1."id" = t0."job_id" WHERE (o1."state" IN (?)) AND (? IN (SELECT value FROM JSON_EACH(o1."tags"))) ORDER BY o1."attempted_at" DESC ["executing", "show_in_dashboard"] 13:39:08.890 [info] Sent 200 in 140ms 13:39:10.069 [info] GET / 13:39:10.069 [debug] Processing with PinchflatWeb.Pages.PageController.home/2 Parameters: %{} Pipelines: [:browser] 13:39:10.070 [debug] QUERY OK source="settings" db=0.3ms idle=1192.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:39:10.070 [debug] QUERY OK source="media_profiles" db=0.1ms queue=0.1ms idle=1190.1ms SELECT count(m0."id") FROM "media_profiles" AS m0 [] 13:39:10.071 [debug] QUERY OK source="sources" db=0.2ms idle=1188.5ms SELECT count(s0."id") FROM "sources" AS s0 [] 13:39:10.130 [debug] QUERY OK source="media_items" db=58.9ms idle=1182.3ms SELECT sum(m0."media_size_bytes") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 13:39:10.134 [debug] QUERY OK source="media_items" db=3.4ms queue=0.1ms idle=60.4ms SELECT count(m0."id") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 13:39:10.135 [debug] QUERY OK source="settings" db=0.4ms queue=0.1ms idle=63.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:39:10.136 [debug] QUERY OK source="settings" db=0.3ms queue=0.1ms idle=64.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:39:10.137 [debug] QUERY OK source="settings" db=0.3ms idle=36.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:39:10.140 [debug] QUERY OK source="media_items" db=1.8ms idle=8.2ms SELECT count(m0."id") FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE (NOT (m0."media_filepath" IS NULL)) [] 13:39:10.142 [debug] QUERY OK source="media_items" db=0.8ms queue=0.1ms idle=6.8ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE (NOT (m0."media_filepath" IS NULL)) ORDER BY m0."id" DESC LIMIT ? OFFSET ? [5, 0] 13:39:10.143 [debug] QUERY OK source="sources" db=0.2ms queue=0.1ms idle=7.5ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" IN (?,?,?,?)) [18, 21, 15, 24] 13:39:10.157 [debug] QUERY OK source="media_items" db=11.9ms idle=9.7ms SELECT count(m0."id") FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds"))) [] 13:39:10.160 [debug] QUERY OK source="media_items" db=2.1ms idle=21.0ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds"))) ORDER BY m0."id" DESC LIMIT ? OFFSET ? [5, 0] 13:39:10.161 [debug] QUERY OK source="sources" db=0.4ms idle=20.2ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" IN (?,?)) [27, 5] 13:39:10.163 [debug] QUERY OK source="tasks" db=0.4ms idle=21.3ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", o1."id", o1."state", o1."queue", o1."worker", o1."args", o1."meta", o1."tags", o1."errors", o1."attempt", o1."attempted_by", o1."max_attempts", o1."priority", o1."attempted_at", o1."cancelled_at", o1."completed_at", o1."discarded_at", o1."inserted_at", o1."scheduled_at" FROM "tasks" AS t0 LEFT OUTER JOIN "oban_jobs" AS o1 ON o1."id" = t0."job_id" WHERE (o1."state" IN (?)) AND (? IN (SELECT value FROM JSON_EACH(o1."tags"))) ORDER BY o1."attempted_at" DESC ["executing", "show_in_dashboard"] 13:39:10.164 [info] Sent 200 in 95ms 13:39:12.758 [info] {"source":"oban","duration":1355,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:39:17.996 [info] GET / 13:39:17.996 [debug] Processing with PinchflatWeb.Pages.PageController.home/2 Parameters: %{} Pipelines: [:browser] 13:39:17.997 [debug] QUERY OK source="settings" db=0.3ms idle=1683.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:39:17.997 [debug] QUERY OK source="media_profiles" db=0.1ms idle=880.5ms SELECT count(m0."id") FROM "media_profiles" AS m0 [] 13:39:17.998 [debug] QUERY OK source="sources" db=0.1ms idle=671.3ms SELECT count(s0."id") FROM "sources" AS s0 [] 13:39:18.003 [debug] QUERY OK source="media_items" db=5.1ms idle=671.6ms SELECT sum(m0."media_size_bytes") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 13:39:18.009 [debug] QUERY OK source="media_items" db=5.8ms idle=677.0ms SELECT count(m0."id") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 13:39:18.010 [debug] QUERY OK source="settings" db=0.2ms idle=12.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:39:18.010 [debug] QUERY OK source="settings" db=0.2ms idle=12.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:39:18.011 [debug] QUERY OK source="settings" db=0.3ms idle=12.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:39:18.013 [debug] QUERY OK source="media_items" db=1.3ms idle=8.8ms SELECT count(m0."id") FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE (NOT (m0."media_filepath" IS NULL)) [] 13:39:18.014 [debug] QUERY OK source="media_items" db=0.4ms idle=4.3ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE (NOT (m0."media_filepath" IS NULL)) ORDER BY m0."id" DESC LIMIT ? OFFSET ? [5, 0] 13:39:18.015 [debug] QUERY OK source="sources" db=0.2ms idle=4.8ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" IN (?,?,?,?)) [18, 21, 15, 24] 13:39:18.029 [debug] QUERY OK source="media_items" db=9.7ms idle=8.6ms SELECT count(m0."id") FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds"))) [] 13:39:18.030 [debug] QUERY OK source="media_items" db=0.9ms idle=17.9ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds"))) ORDER BY m0."id" DESC LIMIT ? OFFSET ? [5, 0] 13:39:18.031 [debug] QUERY OK source="sources" db=0.3ms idle=17.3ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" IN (?,?)) [27, 5] 13:39:18.033 [debug] QUERY OK source="tasks" db=0.2ms idle=19.0ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", o1."id", o1."state", o1."queue", o1."worker", o1."args", o1."meta", o1."tags", o1."errors", o1."attempt", o1."attempted_by", o1."max_attempts", o1."priority", o1."attempted_at", o1."cancelled_at", o1."completed_at", o1."discarded_at", o1."inserted_at", o1."scheduled_at" FROM "tasks" AS t0 LEFT OUTER JOIN "oban_jobs" AS o1 ON o1."id" = t0."job_id" WHERE (o1."state" IN (?)) AND (? IN (SELECT value FROM JSON_EACH(o1."tags"))) ORDER BY o1."attempted_at" DESC ["executing", "show_in_dashboard"] 13:39:18.034 [info] Sent 200 in 38ms 13:39:19.131 [info] {"args":{"id":20},"id":202986,"meta":{},"system_time":1767407959131692077,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 13:39:19.140 [debug] QUERY OK source="sources" db=8.7ms idle=1100.6ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [20] 13:39:19.142 [debug] QUERY OK source="settings" db=1.1ms idle=1107.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:39:19.148 [debug] QUERY OK source="media_profiles" db=6.1ms idle=1023.3ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:39:19.155 [debug] QUERY OK source="settings" db=6.1ms idle=26.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:39:19.155 [debug] Fetching recent media IDs from YouTube API for playlist: UU3HjB3X8jeENm46HCkI0Inw 13:39:19.156 [debug] QUERY OK source="settings" db=0.4ms idle=24.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:39:19.156 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 13:39:19.680 [debug] QUERY OK source="media_items" db=3.7ms idle=536.1ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND m0."media_id" IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [20, "CISwNCR8EXc", "EiIJqc5mV90", "8xJUjtnu72E", "Whh2rDVxvYg", "VybtaBZZqCg", "fuIOAraiRAY", "Ri4qqynMLHk", "xglNhNm95KQ", "5hEq1j_TsEY", "9f5iUsFWqoo", "0SXIhVupLZY", "3gAJpHP3yg4", "8zlnEbQgP74", "EnTFdexbFrM", "P3AU8vUwvAs", "4dQvS_n0uy4", "T5CRSwoP5_w", "cd8IcmBLpXc", "L4nAcT3QYkA", "5gskEcRE1uo", "1xywnh3DqFQ", "fXeqjU4tHqo", "YBMxdPCG_PY", "GB5_4JUB9hc", "EtAUdnvt0kc", "y-5D2HhLbso", "q8kP0pRFRMc", "8mQkTPoWfPo", "U5I92UivGzU", "UoMTKhqTf1U", "oIvzxlDViTo", "kCnh99-yZIs", "orABz0cfQZY", "VKt2PXkavyU", "kYwyB7o7BJs", "UB1FC4Nim1Y", "kN_eMzoJJmA", "4hdpejFLkPc", "ArSlY77uV1w", "2me_AlMFJh8", "OlKsICCPadE", "SjpJZ66rGaU", "iRZp_9irH2g", "CN9qeuO04A4", "BUnuun2sL-8", "XSIfSz3ZEGc", "hW5pHqeC1t4", "_cJV_l9tlaU", "ChT4bsCpwcU", ...] 13:39:19.691 [debug] QUERY OK source="media_items" db=9.4ms idle=540.0ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [20] 13:39:19.697 [debug] QUERY OK source="tasks" db=0.7ms idle=540.2ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [203010, 20, ~U[2026-01-03 02:39:19Z], ~U[2026-01-03 02:39:19Z]] 13:39:19.698 [info] {"args":{"id":20},"id":202986,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":565777,"event":"job:stop","queue_time":528110,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 13:39:22.147 [info] {"args":{"id":21},"id":202987,"meta":{},"system_time":1767407962147546310,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 13:39:22.149 [debug] QUERY OK source="sources" db=0.9ms idle=822.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [21] 13:39:22.150 [debug] QUERY OK source="settings" db=0.5ms idle=823.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:39:22.150 [debug] QUERY OK source="media_profiles" db=0.6ms idle=824.1ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:39:22.151 [debug] QUERY OK source="settings" db=0.5ms idle=11.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:39:22.151 [debug] Fetching recent media IDs from YouTube API for playlist: UU2-i3KuYoODXsM99Z3-Gm0A 13:39:22.152 [debug] QUERY OK source="settings" db=0.3ms idle=4.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:39:22.152 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 13:39:22.736 [debug] QUERY OK source="media_items" db=4.6ms idle=582.3ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND m0."media_id" IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [21, "J5rMffRWoaE", "SpNjg65s29I", "8YoFYb6ahAc", "2z0gjjea0mQ", "2d3dU0R4Sk4", "_TFHZ9W3Jt8", "dqjpFcJG5Cc", "Pm0PXgXMNVY", "YXwzRiYgHHc", "mUK6UT_7PZo", "nE49QFWymsI", "WY4rfxfFsVA", "LHyVvVpA0xM", "HYIwk4qL2os", "RZBQe4RLdZ8", "DN5ES5PlK6c", "OaO4UInG53A", "UqcJk1mPcnQ", "NqSJZesKtFs", "3bsFFOwsQzA", "EaXJ1rQ2v5k", "jnV5Ptgg1Xc", "rXghFt-g_OM", "Y_MU28GV-M0", "OZ1fXb4gcv0", "t7JeRNvBG40", "XG41sdzNz7I", "rQFtIiVV7RA", "TviKrv1FTzc", "0iH3eN6DUbM", "AjzhbnNiJO0", "3Y2fdnw7AwM", "8Z_XpRjS2oo", "RY1Nnw_qOGc", "pUB0TU9UQhI", "eVR3mgSxjUk", "5hGYObRZMPQ", "4MemHNHi_YE", "yM6u1-_JNXo", "VGLq2Tjokl4", "XpV4r2KB0UA", "cvrpvL1kO_8", "Q4kS9l81A0k", "Mq47ro7Pc00", "GAu1Y-5EPeM", "dNIc1vTlbDc", "S1zqKNfggRQ", "zquTrv6kv-U", "-H6sKLcAL9I", ...] 13:39:22.746 [debug] QUERY OK source="media_items" db=8.0ms idle=588.1ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [21] 13:39:22.750 [debug] QUERY OK source="tasks" db=0.8ms idle=597.6ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [203011, 21, ~U[2026-01-03 02:39:22Z], ~U[2026-01-03 02:39:22Z]] 13:39:22.751 [info] {"args":{"id":21},"id":202987,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":603303,"event":"job:stop","queue_time":458166,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 13:39:34.031 [info] GET /media/356740a6-0629-4787-9151-ae24cd24e488/stream 13:39:34.031 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.stream/2 Parameters: %{"uuid" => "356740a6-0629-4787-9151-ae24cd24e488"} Pipelines: [:maybe_basic_auth] 13:39:34.033 [debug] QUERY OK source="media_items" db=0.9ms queue=0.1ms idle=1698.1ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."uuid" = ?) ["356740a6-0629-4787-9151-ae24cd24e488"] 13:39:34.112 [debug] Invalid range request for media item: 356740a6-0629-4787-9151-ae24cd24e488 - serving full file 13:39:34.112 [info] Sent 200 in 80ms 13:39:42.761 [info] {"source":"oban","duration":2060,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:39:43.842 [info] GET /assets/app-ec454b024a27f3bffb6e1a52ff1601c2.css%3Fvsn%3Dd 13:39:43.843 [debug] QUERY OK source="settings" db=0.5ms queue=0.1ms idle=1496.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:39:43.844 [debug] QUERY OK source="settings" db=0.2ms idle=1496.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:39:43.844 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 13:39:43.845 [error] #PID<0.10528.0> running PinchflatWeb.Endpoint (connection #PID<0.10527.0>, stream id 1) terminated Server: pinchflat.suranyami.com:80 (http) Request: GET /assets/app-ec454b024a27f3bffb6e1a52ff1601c2.css%3Fvsn%3Dd ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /assets/app-ec454b024a27f3bffb6e1a52ff1601c2 (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.10527.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/assets/app-ec454b024a27f3bffb6e1a52ff1601c2.css%3Fvsn%3Dd", host: "pinchflat.suranyami.com", peer: {{10, 210, 0, 2}, 51358}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7", "accept-encoding" => "gzip, deflate, br", "accept-language" => "en-US,en;q=0.9", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYeFNjeXNDZ3VjNEJYYzdiRXBQSGpBOXFr.eQkga_bVRxPvS6b-GYCjFrJYvDg6sJQa-crqr5Z9Z4k", "host" => "pinchflat.suranyami.com", "sec-ch-ua" => "Google Chrome\";v=\"111\", \"Not(A:Brand\";v=\"8\", \"Chromium\";v=\"111", "sec-fetch-mode" => "navigate", "user-agent" => "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/117.0.0.0 Safari/537.36", "via" => "1.1 Caddy", "x-forwarded-for" => "103.4.251.58", "x-forwarded-host" => "pinchflat.suranyami.com", "x-forwarded-proto" => "https" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{ "_pinchflat_key" => "SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYeFNjeXNDZ3VjNEJYYzdiRXBQSGpBOXFr.eQkga_bVRxPvS6b-GYCjFrJYvDg6sJQa-crqr5Z9Z4k" }, halted: false, host: "pinchflat.suranyami.com", method: "GET", owner: #PID<0.10528.0>, params: %{}, path_info: ["assets", "app-ec454b024a27f3bffb6e1a52ff1601c2"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.suranyami.com", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {10, 210, 0, 2}, req_cookies: %{ "_pinchflat_key" => "SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYeFNjeXNDZ3VjNEJYYzdiRXBQSGpBOXFr.eQkga_bVRxPvS6b-GYCjFrJYvDg6sJQa-crqr5Z9Z4k" }, req_headers: [ {"accept", "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7"}, {"accept-encoding", "gzip, deflate, br"}, {"accept-language", "en-US,en;q=0.9"}, {"cookie", "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYeFNjeXNDZ3VjNEJYYzdiRXBQSGpBOXFr.eQkga_bVRxPvS6b-GYCjFrJYvDg6sJQa-crqr5Z9Z4k"}, {"host", "pinchflat.suranyami.com"}, {"sec-ch-ua", "Google Chrome\";v=\"111\", \"Not(A:Brand\";v=\"8\", \"Chromium\";v=\"111"}, {"sec-fetch-mode", "navigate"}, {"user-agent", "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/117.0.0.0 Safari/537.36"}, {"via", "1.1 Caddy"}, {"x-forwarded-for", "103.4.251.58"}, {"x-forwarded-host", "pinchflat.suranyami.com"}, {"x-forwarded-proto", "https"} ], request_path: "/assets/app-ec454b024a27f3bffb6e1a52ff1601c2.css%3Fvsn%3Dd", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GIcYMnogetUtHp0AAfQB"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.10527.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/assets/app-ec454b024a27f3bffb6e1a52ff1601c2.css%3Fvsn%3Dd", host: "pinchflat.suranyami.com", peer: {{10, 210, 0, 2}, 51358}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7", "accept-encoding" => "gzip, deflate, br", "accept-language" => "en-US,en;q=0.9", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYeFNjeXNDZ3VjNEJYYzdiRXBQSGpBOXFr.eQkga_bVRxPvS6b-GYCjFrJYvDg6sJQa-crqr5Z9Z4k", "host" => "pinchflat.suranyami.com", "sec-ch-ua" => "Google Chrome\";v=\"111\", \"Not(A:Brand\";v=\"8\", \"Chromium\";v=\"111", "sec-fetch-mode" => "navigate", "user-agent" => "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/117.0.0.0 Safari/537.36", "via" => "1.1 Caddy", "x-forwarded-for" => "103.4.251.58", "x-forwarded-host" => "pinchflat.suranyami.com", "x-forwarded-proto" => "https" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /assets/app-ec454b024a27f3bffb6e1a52ff1601c2 (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.10527.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/assets/app-ec454b024a27f3bffb6e1a52ff1601c2.css%3Fvsn%3Dd", host: "pinchflat.suranyami.com", peer: {{10, 210, 0, 2}, 51358}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7", "accept-encoding" => "gzip, deflate, br", "acc (truncated) 13:39:43.849 [info] GET /favicon.ico%3Fcachebust%3D2024-03-20 13:39:43.850 [debug] QUERY OK source="settings" db=0.2ms idle=1503.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:39:43.850 [debug] QUERY OK source="settings" db=0.2ms idle=1089.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:39:43.850 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 13:39:43.851 [error] #PID<0.10529.0> running PinchflatWeb.Endpoint (connection #PID<0.10527.0>, stream id 2) terminated Server: pinchflat.suranyami.com:80 (http) Request: GET /favicon.ico%3Fcachebust%3D2024-03-20 ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /favicon (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.10527.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/favicon.ico%3Fcachebust%3D2024-03-20", host: "pinchflat.suranyami.com", peer: {{10, 210, 0, 2}, 51358}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7", "accept-encoding" => "gzip, deflate, br", "accept-language" => "en-US,en;q=0.9", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYeFNjeXNDZ3VjNEJYYzdiRXBQSGpBOXFr.eQkga_bVRxPvS6b-GYCjFrJYvDg6sJQa-crqr5Z9Z4k", "host" => "pinchflat.suranyami.com", "sec-ch-ua" => "Google Chrome\";v=\"111\", \"Not(A:Brand\";v=\"8\", \"Chromium\";v=\"111", "sec-fetch-mode" => "navigate", "user-agent" => "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/117.0.0.0 Safari/537.36", "via" => "1.1 Caddy", "x-forwarded-for" => "103.4.251.58", "x-forwarded-host" => "pinchflat.suranyami.com", "x-forwarded-proto" => "https" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 2, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{ "_pinchflat_key" => "SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYeFNjeXNDZ3VjNEJYYzdiRXBQSGpBOXFr.eQkga_bVRxPvS6b-GYCjFrJYvDg6sJQa-crqr5Z9Z4k" }, halted: false, host: "pinchflat.suranyami.com", method: "GET", owner: #PID<0.10529.0>, params: %{}, path_info: ["favicon"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.suranyami.com", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {10, 210, 0, 2}, req_cookies: %{ "_pinchflat_key" => "SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYeFNjeXNDZ3VjNEJYYzdiRXBQSGpBOXFr.eQkga_bVRxPvS6b-GYCjFrJYvDg6sJQa-crqr5Z9Z4k" }, req_headers: [ {"accept", "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7"}, {"accept-encoding", "gzip, deflate, br"}, {"accept-language", "en-US,en;q=0.9"}, {"cookie", "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYeFNjeXNDZ3VjNEJYYzdiRXBQSGpBOXFr.eQkga_bVRxPvS6b-GYCjFrJYvDg6sJQa-crqr5Z9Z4k"}, {"host", "pinchflat.suranyami.com"}, {"sec-ch-ua", "Google Chrome\";v=\"111\", \"Not(A:Brand\";v=\"8\", \"Chromium\";v=\"111"}, {"sec-fetch-mode", "navigate"}, {"user-agent", "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/117.0.0.0 Safari/537.36"}, {"via", "1.1 Caddy"}, {"x-forwarded-for", "103.4.251.58"}, {"x-forwarded-host", "pinchflat.suranyami.com"}, {"x-forwarded-proto", "https"} ], request_path: "/favicon.ico%3Fcachebust%3D2024-03-20", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GIcYMnqNJnT35tEAAfQh"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.10527.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/favicon.ico%3Fcachebust%3D2024-03-20", host: "pinchflat.suranyami.com", peer: {{10, 210, 0, 2}, 51358}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7", "accept-encoding" => "gzip, deflate, br", "accept-language" => "en-US,en;q=0.9", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYeFNjeXNDZ3VjNEJYYzdiRXBQSGpBOXFr.eQkga_bVRxPvS6b-GYCjFrJYvDg6sJQa-crqr5Z9Z4k", "host" => "pinchflat.suranyami.com", "sec-ch-ua" => "Google Chrome\";v=\"111\", \"Not(A:Brand\";v=\"8\", \"Chromium\";v=\"111", "sec-fetch-mode" => "navigate", "user-agent" => "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/117.0.0.0 Safari/537.36", "via" => "1.1 Caddy", "x-forwarded-for" => "103.4.251.58", "x-forwarded-host" => "pinchflat.suranyami.com", "x-forwarded-proto" => "https" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 2, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /favicon (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.10527.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/favicon.ico%3Fcachebust%3D2024-03-20", host: "pinchflat.suranyami.com", peer: {{10, 210, 0, 2}, 51358}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7", "accept-encoding" => "gzip, deflate, br", "accept-language" => "en-US,en;q=0.9", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYeFNjeXNDZ3VjNEJYYzdiRXBQSGpBOXFr.eQkga_bVRxPvS6b-GYCjFrJYvDg6sJQa-crqr5Z9Z4k", (truncated) 13:39:44.010 [info] GET / 13:39:44.011 [debug] Processing with PinchflatWeb.Pages.PageController.home/2 Parameters: %{} Pipelines: [:browser] 13:39:44.012 [debug] QUERY OK source="settings" db=0.2ms idle=733.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:39:44.012 [debug] QUERY OK source="media_profiles" db=0.1ms idle=168.7ms SELECT count(m0."id") FROM "media_profiles" AS m0 [] 13:39:44.012 [debug] QUERY OK source="sources" db=0.1ms idle=168.5ms SELECT count(s0."id") FROM "sources" AS s0 [] 13:39:44.075 [debug] QUERY OK source="media_items" db=62.3ms idle=162.6ms SELECT sum(m0."media_size_bytes") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 13:39:44.080 [debug] QUERY OK source="media_items" db=4.8ms idle=224.9ms SELECT count(m0."id") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 13:39:44.081 [debug] QUERY OK source="settings" db=0.2ms idle=68.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:39:44.081 [debug] QUERY OK source="settings" db=0.3ms queue=0.1ms idle=68.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:39:44.082 [debug] QUERY OK source="settings" db=0.2ms idle=69.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:39:44.086 [debug] QUERY OK source="media_items" db=3.3ms idle=8.1ms SELECT count(m0."id") FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE (NOT (m0."media_filepath" IS NULL)) [] 13:39:44.087 [debug] QUERY OK source="media_items" db=0.5ms idle=6.5ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE (NOT (m0."media_filepath" IS NULL)) ORDER BY m0."id" DESC LIMIT ? OFFSET ? [5, 0] 13:39:44.088 [debug] QUERY OK source="sources" db=0.4ms idle=7.1ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" IN (?,?,?,?)) [18, 21, 15, 24] 13:39:44.127 [debug] QUERY OK source="media_items" db=35.7ms idle=9.8ms SELECT count(m0."id") FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds"))) [] 13:39:44.129 [debug] QUERY OK source="media_items" db=2.0ms idle=45.3ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds"))) ORDER BY m0."id" DESC LIMIT ? OFFSET ? [5, 0] 13:39:44.131 [debug] QUERY OK source="sources" db=0.6ms idle=44.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" IN (?,?)) [27, 5] 13:39:44.139 [debug] QUERY OK source="tasks" db=0.4ms idle=50.8ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", o1."id", o1."state", o1."queue", o1."worker", o1."args", o1."meta", o1."tags", o1."errors", o1."attempt", o1."attempted_by", o1."max_attempts", o1."priority", o1."attempted_at", o1."cancelled_at", o1."completed_at", o1."discarded_at", o1."inserted_at", o1."scheduled_at" FROM "tasks" AS t0 LEFT OUTER JOIN "oban_jobs" AS o1 ON o1."id" = t0."job_id" WHERE (o1."state" IN (?)) AND (? IN (SELECT value FROM JSON_EACH(o1."tags"))) ORDER BY o1."attempted_at" DESC ["executing", "show_in_dashboard"] 13:39:44.139 [info] Sent 200 in 129ms 13:39:44.326 [info] GET /sources 13:39:44.326 [debug] Processing with PinchflatWeb.Sources.SourceController.index/2 Parameters: %{} Pipelines: [:browser] 13:39:44.327 [debug] QUERY OK source="settings" db=0.8ms idle=199.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:39:44.328 [debug] QUERY OK source="settings" db=0.4ms idle=197.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:39:44.329 [debug] QUERY OK source="settings" db=0.3ms idle=196.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:39:44.330 [debug] QUERY OK source="settings" db=0.4ms idle=190.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:39:44.330 [debug] QUERY OK source="settings" db=0.3ms idle=49.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:39:44.374 [debug] QUERY OK source="sources" db=43.2ms idle=3.4ms SELECT count(s0."id") FROM "sources" AS s0 INNER JOIN "media_profiles" AS m1 ON m1."id" = s0."media_profile_id" LEFT OUTER JOIN (SELECT count(sm0."id") AS "downloaded_count", sm0."source_id" AS "source_id", sum(sm0."media_size_bytes") AS "media_size_bytes" FROM "media_items" AS sm0 WHERE (NOT (sm0."media_filepath" IS NULL)) GROUP BY sm0."source_id") AS s2 ON s2."source_id" = s0."id" LEFT OUTER JOIN (SELECT count(sm0."id") AS "pending_count", sm0."source_id" AS "source_id" FROM "media_items" AS sm0 INNER JOIN "sources" AS ss1 ON ss1."id" = sm0."source_id" INNER JOIN "media_profiles" AS sm2 ON sm2."id" = ss1."media_profile_id" WHERE (((((NOT (NOT (sm0."media_filepath" IS NULL)) AND NOT (sm0."prevent_download" = 1)) AND ((ss1."download_cutoff_date" IS NULL) OR date(sm0."uploaded_at") >= ss1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((ss1."title_filter_regex" IS NULL) OR regexp_like(sm0."title", ss1."title_filter_regex"))) AND (((ss1."min_duration_seconds" IS NULL) OR duration_seconds >= ss1."min_duration_seconds") AND ((ss1."max_duration_seconds" IS NULL) OR duration_seconds <= ss1."max_duration_seconds"))) GROUP BY sm0."source_id") AS s3 ON (s3."source_id" = s0."id") AND (s2."source_id" = s0."id") WHERE ((s0."marked_for_deletion_at" IS NULL) AND (m1."marked_for_deletion_at" IS NULL)) [] 13:39:44.423 [debug] QUERY OK source="sources" db=48.1ms idle=46.7ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", coalesce(s2."downloaded_count", 0), coalesce(s3."pending_count", 0), coalesce(s2."media_size_bytes", 0), m1."id", m1."name", m1."redownload_delay_days", m1."output_path_template", m1."download_subs", m1."download_auto_subs", m1."embed_subs", m1."sub_langs", m1."download_thumbnail", m1."embed_thumbnail", m1."download_source_images", m1."download_metadata", m1."embed_metadata", m1."download_nfo", m1."sponsorblock_behaviour", m1."sponsorblock_categories", m1."shorts_behaviour", m1."livestream_behaviour", m1."audio_track", m1."preferred_resolution", m1."media_container", m1."marked_for_deletion_at", m1."inserted_at", m1."updated_at" FROM "sources" AS s0 INNER JOIN "media_profiles" AS m1 ON m1."id" = s0."media_profile_id" LEFT OUTER JOIN (SELECT count(sm0."id") AS "downloaded_count", sm0."source_id" AS "source_id", sum(sm0."media_size_bytes") AS "media_size_bytes" FROM "media_items" AS sm0 WHERE (NOT (sm0."media_filepath" IS NULL)) GROUP BY sm0."source_id") AS s2 ON s2."source_id" = s0."id" LEFT OUTER JOIN (SELECT count(sm0."id") AS "pending_count", sm0."source_id" AS "source_id" FROM "media_items" AS sm0 INNER JOIN "sources" AS ss1 ON ss1."id" = sm0."source_id" INNER JOIN "media_profiles" AS sm2 ON sm2."id" = ss1."media_profile_id" WHERE (((((NOT (NOT (sm0."media_filepath" IS NULL)) AND NOT (sm0."prevent_download" = 1)) AND ((ss1."download_cutoff_date" IS NULL) OR date(sm0."uploaded_at") >= ss1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((ss1."title_filter_regex" IS NULL) OR regexp_like(sm0."title", ss1."title_filter_regex"))) AND (((ss1."min_duration_seconds" IS NULL) OR duration_seconds >= ss1."min_duration_seconds") AND ((ss1."max_duration_seconds" IS NULL) OR duration_seconds <= ss1."max_duration_seconds"))) GROUP BY sm0."source_id") AS s3 ON (s3."source_id" = s0."id") AND (s2."source_id" = s0."id") WHERE ((s0."marked_for_deletion_at" IS NULL) AND (m1."marked_for_deletion_at" IS NULL)) ORDER BY s0."custom_name" COLLATE NOCASE, s0."id" LIMIT ? OFFSET ? [10, 0] 13:39:44.424 [info] GET /settings 13:39:44.424 [debug] Processing with PinchflatWeb.Settings.SettingController.show/2 Parameters: %{} Pipelines: [:browser] 13:39:44.425 [debug] QUERY OK source="settings" db=0.3ms idle=95.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:39:44.426 [info] GET /media_profiles 13:39:44.426 [debug] Processing with PinchflatWeb.MediaProfiles.MediaProfileController.index/2 Parameters: %{} Pipelines: [:browser] 13:39:44.426 [debug] QUERY OK source="settings" db=0.3ms queue=0.1ms idle=95.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:39:44.427 [debug] QUERY OK source="settings" db=0.2ms queue=0.1ms idle=96.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:39:44.427 [info] Sent 200 in 101ms 13:39:44.428 [debug] QUERY OK source="settings" db=0.2ms queue=0.2ms idle=53.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:39:44.432 [info] Sent 200 in 7ms 13:39:44.432 [debug] QUERY OK source="media_profiles" db=0.9ms idle=7.8ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", (SELECT count(ss0."id") AS "result" FROM "sources" AS ss0 WHERE (ss0."media_profile_id" = m0."id")) FROM "media_profiles" AS m0 WHERE (m0."marked_for_deletion_at" IS NULL) ORDER BY m0."name" [] 13:39:44.433 [debug] QUERY OK source="settings" db=0.4ms idle=7.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:39:44.433 [debug] QUERY OK source="settings" db=0.3ms idle=7.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:39:44.434 [debug] QUERY OK source="settings" db=0.5ms idle=7.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:39:44.437 [info] Sent 200 in 11ms 13:39:44.443 [info] GET /app_info 13:39:44.443 [debug] Processing with PinchflatWeb.Settings.SettingController.app_info/2 Parameters: %{} Pipelines: [:browser] 13:39:44.444 [debug] QUERY OK source="settings" db=0.5ms idle=15.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:39:44.444 [info] GET /https%3A/discord.gg/j7T6dCuwU4 13:39:44.445 [info] GET /https%3A/github.com/kieraneglin/pinchflat 13:39:44.445 [debug] QUERY OK source="settings" db=0.3ms idle=12.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:39:44.445 [debug] QUERY OK source="settings" db=0.5ms queue=0.2ms idle=12.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:39:44.445 [debug] QUERY OK source="settings" db=0.5ms idle=11.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:39:44.446 [debug] QUERY OK source="settings" db=0.2ms idle=0.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:39:44.446 [debug] QUERY OK source="settings" db=0.7ms idle=10.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:39:44.446 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 13:39:44.447 [debug] QUERY OK source="settings" db=1.1ms idle=1.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:39:44.447 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 13:39:44.447 [debug] QUERY OK source="settings" db=0.4ms queue=0.1ms idle=1.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:39:44.448 [debug] QUERY OK source="settings" db=0.5ms queue=0.1ms idle=2.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:39:44.450 [info] Sent 200 in 6ms 13:39:44.447 [error] #PID<0.10538.0> running PinchflatWeb.Endpoint (connection #PID<0.10527.0>, stream id 5) terminated Server: pinchflat.suranyami.com:80 (http) Request: GET /https%3A/github.com/kieraneglin/pinchflat ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /https%3A/github.com/kieraneglin/pinchflat (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.10527.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/https%3A/github.com/kieraneglin/pinchflat", host: "pinchflat.suranyami.com", peer: {{10, 210, 0, 2}, 51358}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7", "accept-encoding" => "gzip, deflate, br", "accept-language" => "en-US,en;q=0.9", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYeFNjeXNDZ3VjNEJYYzdiRXBQSGpBOXFr.eQkga_bVRxPvS6b-GYCjFrJYvDg6sJQa-crqr5Z9Z4k", "host" => "pinchflat.suranyami.com", "sec-ch-ua" => "Google Chrome\";v=\"111\", \"Not(A:Brand\";v=\"8\", \"Chromium\";v=\"111", "sec-fetch-mode" => "navigate", "user-agent" => "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/117.0.0.0 Safari/537.36", "via" => "1.1 Caddy", "x-forwarded-for" => "103.4.251.58", "x-forwarded-host" => "pinchflat.suranyami.com", "x-forwarded-proto" => "https" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 5, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{ "_pinchflat_key" => "SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYeFNjeXNDZ3VjNEJYYzdiRXBQSGpBOXFr.eQkga_bVRxPvS6b-GYCjFrJYvDg6sJQa-crqr5Z9Z4k" }, halted: false, host: "pinchflat.suranyami.com", method: "GET", owner: #PID<0.10538.0>, params: %{}, path_info: ["https%3A", "github.com", "kieraneglin", "pinchflat"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.suranyami.com", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {10, 210, 0, 2}, req_cookies: %{ "_pinchflat_key" => "SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYeFNjeXNDZ3VjNEJYYzdiRXBQSGpBOXFr.eQkga_bVRxPvS6b-GYCjFrJYvDg6sJQa-crqr5Z9Z4k" }, req_headers: [ {"accept", "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7"}, {"accept-encoding", "gzip, deflate, br"}, {"accept-language", "en-US,en;q=0.9"}, {"cookie", "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYeFNjeXNDZ3VjNEJYYzdiRXBQSGpBOXFr.eQkga_bVRxPvS6b-GYCjFrJYvDg6sJQa-crqr5Z9Z4k"}, {"host", "pinchflat.suranyami.com"}, {"sec-ch-ua", "Google Chrome\";v=\"111\", \"Not(A:Brand\";v=\"8\", \"Chromium\";v=\"111"}, {"sec-fetch-mode", "navigate"}, {"user-agent", "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/117.0.0.0 Safari/537.36"}, {"via", "1.1 Caddy"}, {"x-forwarded-for", "103.4.251.58"}, {"x-forwarded-host", "pinchflat.suranyami.com"}, {"x-forwarded-proto", "https"} ], request_path: "/https%3A/github.com/kieraneglin/pinchflat", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GIcYMp4ITI9az0MAAfXB"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.10527.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/https%3A/github.com/kieraneglin/pinchflat", host: "pinchflat.suranyami.com", peer: {{10, 210, 0, 2}, 51358}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7", "accept-encoding" => "gzip, deflate, br", "accept-language" => "en-US,en;q=0.9", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYeFNjeXNDZ3VjNEJYYzdiRXBQSGpBOXFr.eQkga_bVRxPvS6b-GYCjFrJYvDg6sJQa-crqr5Z9Z4k", "host" => "pinchflat.suranyami.com", "sec-ch-ua" => "Google Chrome\";v=\"111\", \"Not(A:Brand\";v=\"8\", \"Chromium\";v=\"111", "sec-fetch-mode" => "navigate", "user-agent" => "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/117.0.0.0 Safari/537.36", "via" => "1.1 Caddy", "x-forwarded-for" => "103.4.251.58", "x-forwarded-host" => "pinchflat.suranyami.com", "x-forwarded-proto" => "https" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 5, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /https%3A/github.com/kieraneglin/pinchflat (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.10527.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/https%3A/github.com/kieraneglin/pinchflat", host: "pinchflat.suranyami.com", peer: {{10, 210, 0, 2}, 51358}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7", "accept-encoding" => "gzip, deflate, br", "accept-language" => "en-US,en;q=0.9", "cookie" => "_pinchflat_key=SF (truncated) 13:39:44.452 [info] GET /https%3A/github.com/kieraneglin/pinchflat/wiki 13:39:44.453 [debug] QUERY OK source="settings" db=0.2ms idle=6.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:39:44.453 [debug] QUERY OK source="settings" db=0.1ms idle=6.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:39:44.453 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 13:39:44.447 [error] #PID<0.10537.0> running PinchflatWeb.Endpoint (connection #PID<0.10532.0>, stream id 2) terminated Server: pinchflat.suranyami.com:80 (http) Request: GET /https%3A/discord.gg/j7T6dCuwU4 ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /https%3A/discord.gg/j7T6dCuwU4 (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.10532.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/https%3A/discord.gg/j7T6dCuwU4", host: "pinchflat.suranyami.com", peer: {{10, 210, 0, 2}, 51372}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7", "accept-encoding" => "gzip, deflate, br", "accept-language" => "en-US,en;q=0.9", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYeFNjeXNDZ3VjNEJYYzdiRXBQSGpBOXFr.eQkga_bVRxPvS6b-GYCjFrJYvDg6sJQa-crqr5Z9Z4k", "host" => "pinchflat.suranyami.com", "sec-ch-ua" => "Google Chrome\";v=\"111\", \"Not(A:Brand\";v=\"8\", \"Chromium\";v=\"111", "sec-fetch-mode" => "navigate", "user-agent" => "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/117.0.0.0 Safari/537.36", "via" => "1.1 Caddy", "x-forwarded-for" => "103.4.251.58", "x-forwarded-host" => "pinchflat.suranyami.com", "x-forwarded-proto" => "https" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 2, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{ "_pinchflat_key" => "SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYeFNjeXNDZ3VjNEJYYzdiRXBQSGpBOXFr.eQkga_bVRxPvS6b-GYCjFrJYvDg6sJQa-crqr5Z9Z4k" }, halted: false, host: "pinchflat.suranyami.com", method: "GET", owner: #PID<0.10537.0>, params: %{}, path_info: ["https%3A", "discord.gg", "j7T6dCuwU4"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.suranyami.com", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {10, 210, 0, 2}, req_cookies: %{ "_pinchflat_key" => "SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYeFNjeXNDZ3VjNEJYYzdiRXBQSGpBOXFr.eQkga_bVRxPvS6b-GYCjFrJYvDg6sJQa-crqr5Z9Z4k" }, req_headers: [ {"accept", "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7"}, {"accept-encoding", "gzip, deflate, br"}, {"accept-language", "en-US,en;q=0.9"}, {"cookie", "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYeFNjeXNDZ3VjNEJYYzdiRXBQSGpBOXFr.eQkga_bVRxPvS6b-GYCjFrJYvDg6sJQa-crqr5Z9Z4k"}, {"host", "pinchflat.suranyami.com"}, {"sec-ch-ua", "Google Chrome\";v=\"111\", \"Not(A:Brand\";v=\"8\", \"Chromium\";v=\"111"}, {"sec-fetch-mode", "navigate"}, {"user-agent", "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/117.0.0.0 Safari/537.36"}, {"via", "1.1 Caddy"}, {"x-forwarded-for", "103.4.251.58"}, {"x-forwarded-host", "pinchflat.suranyami.com"}, {"x-forwarded-proto", "https"} ], request_path: "/https%3A/discord.gg/j7T6dCuwU4", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GIcYMp4FdZ6IPWgAAIRD"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.10532.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/https%3A/discord.gg/j7T6dCuwU4", host: "pinchflat.suranyami.com", peer: {{10, 210, 0, 2}, 51372}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7", "accept-encoding" => "gzip, deflate, br", "accept-language" => "en-US,en;q=0.9", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYeFNjeXNDZ3VjNEJYYzdiRXBQSGpBOXFr.eQkga_bVRxPvS6b-GYCjFrJYvDg6sJQa-crqr5Z9Z4k", "host" => "pinchflat.suranyami.com", "sec-ch-ua" => "Google Chrome\";v=\"111\", \"Not(A:Brand\";v=\"8\", \"Chromium\";v=\"111", "sec-fetch-mode" => "navigate", "user-agent" => "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/117.0.0.0 Safari/537.36", "via" => "1.1 Caddy", "x-forwarded-for" => "103.4.251.58", "x-forwarded-host" => "pinchflat.suranyami.com", "x-forwarded-proto" => "https" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 2, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /https%3A/discord.gg/j7T6dCuwU4 (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.10532.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/https%3A/discord.gg/j7T6dCuwU4", host: "pinchflat.suranyami.com", peer: {{10, 210, 0, 2}, 51372}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7", "accept-encoding" => "gzip, deflate, br", "accept-language" => "en-US,en;q=0.9", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYeFNjeXNDZ3VjNEJYYzdiRXBQSGpBOXFr.eQkga_bVRxPvS6b- (truncated) 13:39:44.454 [error] #PID<0.10540.0> running PinchflatWeb.Endpoint (connection #PID<0.10539.0>, stream id 1) terminated Server: pinchflat.suranyami.com:80 (http) Request: GET /https%3A/github.com/kieraneglin/pinchflat/wiki ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /https%3A/github.com/kieraneglin/pinchflat/wiki (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.10539.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/https%3A/github.com/kieraneglin/pinchflat/wiki", host: "pinchflat.suranyami.com", peer: {{10, 210, 0, 2}, 51402}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7", "accept-encoding" => "gzip, deflate, br", "accept-language" => "en-US,en;q=0.9", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYeFNjeXNDZ3VjNEJYYzdiRXBQSGpBOXFr.eQkga_bVRxPvS6b-GYCjFrJYvDg6sJQa-crqr5Z9Z4k", "host" => "pinchflat.suranyami.com", "sec-ch-ua" => "Google Chrome\";v=\"111\", \"Not(A:Brand\";v=\"8\", \"Chromium\";v=\"111", "sec-fetch-mode" => "navigate", "user-agent" => "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/117.0.0.0 Safari/537.36", "via" => "1.1 Caddy", "x-forwarded-for" => "103.4.251.58", "x-forwarded-host" => "pinchflat.suranyami.com", "x-forwarded-proto" => "https" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{ "_pinchflat_key" => "SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYeFNjeXNDZ3VjNEJYYzdiRXBQSGpBOXFr.eQkga_bVRxPvS6b-GYCjFrJYvDg6sJQa-crqr5Z9Z4k" }, halted: false, host: "pinchflat.suranyami.com", method: "GET", owner: #PID<0.10540.0>, params: %{}, path_info: ["https%3A", "github.com", "kieraneglin", "pinchflat", "wiki"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.suranyami.com", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {10, 210, 0, 2}, req_cookies: %{ "_pinchflat_key" => "SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYeFNjeXNDZ3VjNEJYYzdiRXBQSGpBOXFr.eQkga_bVRxPvS6b-GYCjFrJYvDg6sJQa-crqr5Z9Z4k" }, req_headers: [ {"accept", "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7"}, {"accept-encoding", "gzip, deflate, br"}, {"accept-language", "en-US,en;q=0.9"}, {"cookie", "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYeFNjeXNDZ3VjNEJYYzdiRXBQSGpBOXFr.eQkga_bVRxPvS6b-GYCjFrJYvDg6sJQa-crqr5Z9Z4k"}, {"host", "pinchflat.suranyami.com"}, {"sec-ch-ua", "Google Chrome\";v=\"111\", \"Not(A:Brand\";v=\"8\", \"Chromium\";v=\"111"}, {"sec-fetch-mode", "navigate"}, {"user-agent", "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/117.0.0.0 Safari/537.36"}, {"via", "1.1 Caddy"}, {"x-forwarded-for", "103.4.251.58"}, {"x-forwarded-host", "pinchflat.suranyami.com"}, {"x-forwarded-proto", "https"} ], request_path: "/https%3A/github.com/kieraneglin/pinchflat/wiki", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GIcYMp50aJ3OcaMAANQC"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.10539.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/https%3A/github.com/kieraneglin/pinchflat/wiki", host: "pinchflat.suranyami.com", peer: {{10, 210, 0, 2}, 51402}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7", "accept-encoding" => "gzip, deflate, br", "accept-language" => "en-US,en;q=0.9", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYeFNjeXNDZ3VjNEJYYzdiRXBQSGpBOXFr.eQkga_bVRxPvS6b-GYCjFrJYvDg6sJQa-crqr5Z9Z4k", "host" => "pinchflat.suranyami.com", "sec-ch-ua" => "Google Chrome\";v=\"111\", \"Not(A:Brand\";v=\"8\", \"Chromium\";v=\"111", "sec-fetch-mode" => "navigate", "user-agent" => "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/117.0.0.0 Safari/537.36", "via" => "1.1 Caddy", "x-forwarded-for" => "103.4.251.58", "x-forwarded-host" => "pinchflat.suranyami.com", "x-forwarded-proto" => "https" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /https%3A/github.com/kieraneglin/pinchflat/wiki (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.10539.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/https%3A/github.com/kieraneglin/pinchflat/wiki", host: "pinchflat.suranyami.com", peer: {{10, 210, 0, 2}, 51402}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7", "accept-encoding" => "gzip, deflate, br", "accept-language" => "en-US,en;q=0.9", (truncated) 13:39:44.527 [info] GET /https%3A/github.com/kieraneglin/pinchflat/releases 13:39:44.527 [debug] QUERY OK source="settings" db=0.2ms idle=80.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:39:44.528 [debug] QUERY OK source="settings" db=0.2ms idle=80.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:39:44.528 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 13:39:44.529 [error] #PID<0.10541.0> running PinchflatWeb.Endpoint (connection #PID<0.10539.0>, stream id 2) terminated Server: pinchflat.suranyami.com:80 (http) Request: GET /https%3A/github.com/kieraneglin/pinchflat/releases ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /https%3A/github.com/kieraneglin/pinchflat/releases (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.10539.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/https%3A/github.com/kieraneglin/pinchflat/releases", host: "pinchflat.suranyami.com", peer: {{10, 210, 0, 2}, 51402}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7", "accept-encoding" => "gzip, deflate, br", "accept-language" => "en-US,en;q=0.9", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYeFNjeXNDZ3VjNEJYYzdiRXBQSGpBOXFr.eQkga_bVRxPvS6b-GYCjFrJYvDg6sJQa-crqr5Z9Z4k", "host" => "pinchflat.suranyami.com", "sec-ch-ua" => "Google Chrome\";v=\"111\", \"Not(A:Brand\";v=\"8\", \"Chromium\";v=\"111", "sec-fetch-mode" => "navigate", "user-agent" => "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/117.0.0.0 Safari/537.36", "via" => "1.1 Caddy", "x-forwarded-for" => "103.4.251.58", "x-forwarded-host" => "pinchflat.suranyami.com", "x-forwarded-proto" => "https" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 2, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{ "_pinchflat_key" => "SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYeFNjeXNDZ3VjNEJYYzdiRXBQSGpBOXFr.eQkga_bVRxPvS6b-GYCjFrJYvDg6sJQa-crqr5Z9Z4k" }, halted: false, host: "pinchflat.suranyami.com", method: "GET", owner: #PID<0.10541.0>, params: %{}, path_info: ["https%3A", "github.com", "kieraneglin", "pinchflat", "releases"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.suranyami.com", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {10, 210, 0, 2}, req_cookies: %{ "_pinchflat_key" => "SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYeFNjeXNDZ3VjNEJYYzdiRXBQSGpBOXFr.eQkga_bVRxPvS6b-GYCjFrJYvDg6sJQa-crqr5Z9Z4k" }, req_headers: [ {"accept", "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7"}, {"accept-encoding", "gzip, deflate, br"}, {"accept-language", "en-US,en;q=0.9"}, {"cookie", "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYeFNjeXNDZ3VjNEJYYzdiRXBQSGpBOXFr.eQkga_bVRxPvS6b-GYCjFrJYvDg6sJQa-crqr5Z9Z4k"}, {"host", "pinchflat.suranyami.com"}, {"sec-ch-ua", "Google Chrome\";v=\"111\", \"Not(A:Brand\";v=\"8\", \"Chromium\";v=\"111"}, {"sec-fetch-mode", "navigate"}, {"user-agent", "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/117.0.0.0 Safari/537.36"}, {"via", "1.1 Caddy"}, {"x-forwarded-for", "103.4.251.58"}, {"x-forwarded-host", "pinchflat.suranyami.com"}, {"x-forwarded-proto", "https"} ], request_path: "/https%3A/github.com/kieraneglin/pinchflat/releases", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GIcYMqLtDWB0AgsAAIRj"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.10539.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/https%3A/github.com/kieraneglin/pinchflat/releases", host: "pinchflat.suranyami.com", peer: {{10, 210, 0, 2}, 51402}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7", "accept-encoding" => "gzip, deflate, br", "accept-language" => "en-US,en;q=0.9", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYeFNjeXNDZ3VjNEJYYzdiRXBQSGpBOXFr.eQkga_bVRxPvS6b-GYCjFrJYvDg6sJQa-crqr5Z9Z4k", "host" => "pinchflat.suranyami.com", "sec-ch-ua" => "Google Chrome\";v=\"111\", \"Not(A:Brand\";v=\"8\", \"Chromium\";v=\"111", "sec-fetch-mode" => "navigate", "user-agent" => "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/117.0.0.0 Safari/537.36", "via" => "1.1 Caddy", "x-forwarded-for" => "103.4.251.58", "x-forwarded-host" => "pinchflat.suranyami.com", "x-forwarded-proto" => "https" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 2, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /https%3A/github.com/kieraneglin/pinchflat/releases (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.10539.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/https%3A/github.com/kieraneglin/pinchflat/releases", host: "pinchflat.suranyami.com", peer: {{10, 210, 0, 2}, 51402}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7", "accept-encoding" => "gzip, deflate, br", "a (truncated) 13:39:44.679 [info] GET /%23 13:39:44.680 [debug] QUERY OK source="settings" db=0.3ms idle=230.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:39:44.680 [debug] QUERY OK source="settings" db=0.2ms idle=227.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:39:44.680 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 13:39:44.683 [info] GET /sources/24/media/59540 13:39:44.683 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "59540", "source_id" => "24"} Pipelines: [:browser] 13:39:44.684 [debug] QUERY OK source="media_items" db=0.3ms idle=230.6ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [59540] 13:39:44.685 [debug] QUERY OK source="tasks" db=0.3ms idle=157.0ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [59540] 13:39:44.685 [debug] QUERY OK source="sources" db=0.6ms idle=156.6ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [24] 13:39:44.686 [debug] QUERY OK source="oban_jobs" db=0.5ms idle=5.7ms SELECT o0."id", o0."state", o0."queue", o0."worker", o0."args", o0."meta", o0."tags", o0."errors", o0."attempt", o0."attempted_by", o0."max_attempts", o0."priority", o0."attempted_at", o0."cancelled_at", o0."completed_at", o0."discarded_at", o0."inserted_at", o0."scheduled_at", o0."id" FROM "oban_jobs" AS o0 WHERE (o0."id" = ?) [202775] 13:39:44.687 [debug] QUERY OK source="settings" db=0.2ms idle=6.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:39:44.688 [debug] QUERY OK source="settings" db=0.6ms idle=2.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:39:44.688 [debug] QUERY OK source="settings" db=0.2ms idle=3.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:39:44.690 [debug] QUERY OK source="media_profiles" db=0.2ms idle=4.0ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:39:44.681 [error] #PID<0.10542.0> running PinchflatWeb.Endpoint (connection #PID<0.10539.0>, stream id 3) terminated Server: pinchflat.suranyami.com:80 (http) Request: GET /%23 ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /%23 (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.10539.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/%23", host: "pinchflat.suranyami.com", peer: {{10, 210, 0, 2}, 51402}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7", "accept-encoding" => "gzip, deflate, br", "accept-language" => "en-US,en;q=0.9", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYeFNjeXNDZ3VjNEJYYzdiRXBQSGpBOXFr.eQkga_bVRxPvS6b-GYCjFrJYvDg6sJQa-crqr5Z9Z4k", "host" => "pinchflat.suranyami.com", "sec-ch-ua" => "Google Chrome\";v=\"111\", \"Not(A:Brand\";v=\"8\", \"Chromium\";v=\"111", "sec-fetch-mode" => "navigate", "user-agent" => "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/117.0.0.0 Safari/537.36", "via" => "1.1 Caddy", "x-forwarded-for" => "103.4.251.58", "x-forwarded-host" => "pinchflat.suranyami.com", "x-forwarded-proto" => "https" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 3, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{ "_pinchflat_key" => "SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYeFNjeXNDZ3VjNEJYYzdiRXBQSGpBOXFr.eQkga_bVRxPvS6b-GYCjFrJYvDg6sJQa-crqr5Z9Z4k" }, halted: false, host: "pinchflat.suranyami.com", method: "GET", owner: #PID<0.10542.0>, params: %{}, path_info: ["%23"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.suranyami.com", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {10, 210, 0, 2}, req_cookies: %{ "_pinchflat_key" => "SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYeFNjeXNDZ3VjNEJYYzdiRXBQSGpBOXFr.eQkga_bVRxPvS6b-GYCjFrJYvDg6sJQa-crqr5Z9Z4k" }, req_headers: [ {"accept", "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7"}, {"accept-encoding", "gzip, deflate, br"}, {"accept-language", "en-US,en;q=0.9"}, {"cookie", "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYeFNjeXNDZ3VjNEJYYzdiRXBQSGpBOXFr.eQkga_bVRxPvS6b-GYCjFrJYvDg6sJQa-crqr5Z9Z4k"}, {"host", "pinchflat.suranyami.com"}, {"sec-ch-ua", "Google Chrome\";v=\"111\", \"Not(A:Brand\";v=\"8\", \"Chromium\";v=\"111"}, {"sec-fetch-mode", "navigate"}, {"user-agent", "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/117.0.0.0 Safari/537.36"}, {"via", "1.1 Caddy"}, {"x-forwarded-for", "103.4.251.58"}, {"x-forwarded-host", "pinchflat.suranyami.com"}, {"x-forwarded-proto", "https"} ], request_path: "/%23", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GIcYMqwBf4ZY_xoAAISD"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.10539.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/%23", host: "pinchflat.suranyami.com", peer: {{10, 210, 0, 2}, 51402}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7", "accept-encoding" => "gzip, deflate, br", "accept-language" => "en-US,en;q=0.9", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYeFNjeXNDZ3VjNEJYYzdiRXBQSGpBOXFr.eQkga_bVRxPvS6b-GYCjFrJYvDg6sJQa-crqr5Z9Z4k", "host" => "pinchflat.suranyami.com", "sec-ch-ua" => "Google Chrome\";v=\"111\", \"Not(A:Brand\";v=\"8\", \"Chromium\";v=\"111", "sec-fetch-mode" => "navigate", "user-agent" => "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/117.0.0.0 Safari/537.36", "via" => "1.1 Caddy", "x-forwarded-for" => "103.4.251.58", "x-forwarded-host" => "pinchflat.suranyami.com", "x-forwarded-proto" => "https" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 3, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /%23 (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.10539.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/%23", host: "pinchflat.suranyami.com", peer: {{10, 210, 0, 2}, 51402}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7", "accept-encoding" => "gzip, deflate, br", "accept-language" => "en-US,en;q=0.9", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYeFNjeXNDZ3VjNEJYYzdiRXBQSGpBOXFr.eQkga_bVRxPvS6b-GYCjFrJYvDg6sJQa-crqr5Z9Z4k", "host" => "pinchflat.suranyami.com", "sec-ch-ua" => "Google Chrome\";v=\"111\", \"Not(A:Brand\";v=\"8\", \"Chromium\";v=\"111", "sec-fetch-mode" => (truncated) 13:39:44.735 [info] Sent 200 in 51ms 13:39:44.737 [info] GET /sources/15/media/59539 13:39:44.737 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "59539", "source_id" => "15"} Pipelines: [:browser] 13:39:44.738 [info] GET /sources/24 13:39:44.738 [debug] Processing with PinchflatWeb.Sources.SourceController.show/2 Parameters: %{"id" => "24"} Pipelines: [:browser] 13:39:44.738 [debug] QUERY OK source="media_items" db=0.5ms queue=0.1ms idle=51.3ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [59539] 13:39:44.740 [debug] QUERY OK source="tasks" db=1.0ms idle=50.8ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [59539] 13:39:44.740 [debug] QUERY OK source="sources" db=1.3ms idle=51.5ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [24] 13:39:44.740 [debug] QUERY OK source="sources" db=1.4ms idle=50.2ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [15] 13:39:44.741 [debug] QUERY OK source="media_profiles" db=0.7ms idle=50.6ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:39:44.741 [debug] QUERY OK source="oban_jobs" db=0.5ms idle=2.5ms SELECT o0."id", o0."state", o0."queue", o0."worker", o0."args", o0."meta", o0."tags", o0."errors", o0."attempt", o0."attempted_by", o0."max_attempts", o0."priority", o0."attempted_at", o0."cancelled_at", o0."completed_at", o0."discarded_at", o0."inserted_at", o0."scheduled_at", o0."id" FROM "oban_jobs" AS o0 WHERE (o0."id" = ?) [202639] 13:39:44.742 [debug] QUERY OK source="settings" db=0.5ms queue=0.1ms idle=1.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:39:44.743 [debug] QUERY OK source="tasks" db=1.4ms queue=0.1ms idle=1.8ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at" FROM "tasks" AS t0 INNER JOIN "oban_jobs" AS o1 ON o1."id" = t0."job_id" WHERE (t0."source_id" = ?) AND (o1."state" IN (?,?,?,?)) [24, "executing", "available", "scheduled", "retryable"] 13:39:44.743 [debug] QUERY OK source="settings" db=0.6ms queue=0.1ms idle=2.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:39:44.744 [debug] QUERY OK source="oban_jobs" db=0.6ms queue=0.1ms idle=2.2ms SELECT o0."id", o0."state", o0."queue", o0."worker", o0."args", o0."meta", o0."tags", o0."errors", o0."attempt", o0."attempted_by", o0."max_attempts", o0."priority", o0."attempted_at", o0."cancelled_at", o0."completed_at", o0."discarded_at", o0."inserted_at", o0."scheduled_at", o0."id" FROM "oban_jobs" AS o0 WHERE (o0."id" IN (?,?)) [202997, 202152] 13:39:44.745 [debug] QUERY OK source="settings" db=0.4ms idle=2.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:39:44.746 [debug] QUERY OK source="settings" db=1.4ms idle=2.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:39:44.746 [debug] QUERY OK source="settings" db=0.3ms idle=2.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:39:44.747 [debug] QUERY OK source="media_profiles" db=0.6ms idle=2.8ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:39:44.748 [debug] QUERY OK source="settings" db=0.3ms queue=0.4ms idle=2.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:39:44.752 [debug] QUERY OK source="sources" db=1.0ms idle=6.1ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [24] 13:39:44.754 [debug] QUERY OK source="media_items" db=1.1ms idle=6.7ms SELECT count(m0."id") FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [24] 13:39:44.756 [debug] QUERY OK source="media_items" db=1.2ms idle=8.1ms SELECT m0."id", m0."title", m0."uploaded_at", m0."prevent_download", m0."last_error" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) ORDER BY m0."uploaded_at" DESC LIMIT ? OFFSET ? [24, 10, 0] 13:39:44.757 [debug] QUERY OK source="sources" db=0.3ms idle=9.4ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [24] 13:39:44.757 [debug] QUERY OK source="media_items" db=0.2ms idle=9.5ms SELECT count(m0."id") FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND NOT (m0."media_filepath" IS NULL)) [24] 13:39:44.759 [debug] QUERY OK source="media_items" db=1.7ms idle=5.6ms SELECT m0."id", m0."title", m0."uploaded_at", m0."prevent_download", m0."last_error" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND NOT (m0."media_filepath" IS NULL)) ORDER BY m0."uploaded_at" DESC LIMIT ? OFFSET ? [24, 10, 0] 13:39:44.761 [debug] QUERY OK source="sources" db=0.6ms idle=6.6ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [24] 13:39:44.762 [debug] QUERY OK source="media_items" db=0.4ms idle=5.7ms SELECT count(m0."id") FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds"))))) [24] 13:39:44.763 [info] Sent 200 in 26ms 13:39:44.763 [debug] QUERY OK source="media_items" db=0.8ms idle=5.6ms SELECT m0."id", m0."title", m0."uploaded_at", m0."prevent_download", m0."last_error" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds"))))) ORDER BY m0."uploaded_at" DESC LIMIT ? OFFSET ? [24, 10, 0] 13:39:44.766 [info] Sent 200 in 27ms 13:39:44.788 [info] GET /sources/15 13:39:44.789 [debug] Processing with PinchflatWeb.Sources.SourceController.show/2 Parameters: %{"id" => "15"} Pipelines: [:browser] 13:39:44.790 [debug] QUERY OK source="sources" db=0.8ms idle=31.7ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [15] 13:39:44.791 [debug] QUERY OK source="media_profiles" db=0.8ms queue=0.1ms idle=31.2ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:39:44.796 [debug] QUERY OK source="tasks" db=3.3ms idle=30.9ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at" FROM "tasks" AS t0 INNER JOIN "oban_jobs" AS o1 ON o1."id" = t0."job_id" WHERE (t0."source_id" = ?) AND (o1."state" IN (?,?,?,?)) [15, "executing", "available", "scheduled", "retryable"] 13:39:44.797 [debug] QUERY OK source="oban_jobs" db=0.9ms queue=0.1ms idle=34.1ms SELECT o0."id", o0."state", o0."queue", o0."worker", o0."args", o0."meta", o0."tags", o0."errors", o0."attempt", o0."attempted_by", o0."max_attempts", o0."priority", o0."attempted_at", o0."cancelled_at", o0."completed_at", o0."discarded_at", o0."inserted_at", o0."scheduled_at", o0."id" FROM "oban_jobs" AS o0 WHERE (o0."id" IN (?,?)) [203007, 202175] 13:39:44.799 [debug] QUERY OK source="settings" db=0.6ms queue=0.2ms idle=35.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:39:44.800 [debug] QUERY OK source="settings" db=0.5ms queue=0.1ms idle=9.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:39:44.801 [debug] QUERY OK source="settings" db=0.6ms idle=9.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:39:44.804 [debug] QUERY OK source="sources" db=0.6ms idle=7.4ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [15] 13:39:44.819 [debug] QUERY OK source="media_items" db=14.5ms idle=6.5ms SELECT count(m0."id") FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [15] 13:39:44.822 [debug] QUERY OK source="media_items" db=3.2ms idle=19.8ms SELECT m0."id", m0."title", m0."uploaded_at", m0."prevent_download", m0."last_error" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) ORDER BY m0."uploaded_at" DESC LIMIT ? OFFSET ? [15, 10, 0] 13:39:44.823 [debug] QUERY OK source="sources" db=0.3ms idle=22.7ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [15] 13:39:44.824 [debug] QUERY OK source="media_items" db=0.2ms idle=21.9ms SELECT count(m0."id") FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND NOT (m0."media_filepath" IS NULL)) [15] 13:39:44.825 [debug] QUERY OK source="media_items" db=0.7ms idle=20.1ms SELECT m0."id", m0."title", m0."uploaded_at", m0."prevent_download", m0."last_error" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND NOT (m0."media_filepath" IS NULL)) ORDER BY m0."uploaded_at" DESC LIMIT ? OFFSET ? [15, 10, 0] 13:39:44.826 [debug] QUERY OK source="sources" db=0.2ms idle=7.3ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [15] 13:39:44.827 [debug] QUERY OK source="media_items" db=0.9ms idle=4.1ms SELECT count(m0."id") FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds"))))) [15] 13:39:44.831 [debug] QUERY OK source="media_items" db=3.4ms idle=4.2ms SELECT m0."id", m0."title", m0."uploaded_at", m0."prevent_download", m0."last_error" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds"))))) ORDER BY m0."uploaded_at" DESC LIMIT ? OFFSET ? [15, 10, 0] 13:39:44.833 [info] Sent 200 in 44ms 13:39:44.915 [info] GET /sources/18/media/59084 13:39:44.915 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "59084", "source_id" => "18"} Pipelines: [:browser] 13:39:44.917 [debug] QUERY OK source="media_items" db=0.9ms idle=91.8ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [59084] 13:39:44.918 [debug] QUERY OK source="tasks" db=0.7ms idle=90.9ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [59084] 13:39:44.918 [debug] QUERY OK source="sources" db=1.0ms idle=92.4ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [18] 13:39:44.919 [debug] QUERY OK source="oban_jobs" db=0.6ms idle=91.2ms SELECT o0."id", o0."state", o0."queue", o0."worker", o0."args", o0."meta", o0."tags", o0."errors", o0."attempt", o0."attempted_by", o0."max_attempts", o0."priority", o0."attempted_at", o0."cancelled_at", o0."completed_at", o0."discarded_at", o0."inserted_at", o0."scheduled_at", o0."id" FROM "oban_jobs" AS o0 WHERE (o0."id" = ?) [202150] 13:39:44.920 [debug] QUERY OK source="settings" db=0.3ms idle=88.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:39:44.921 [debug] QUERY OK source="settings" db=0.4ms idle=3.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:39:44.922 [debug] QUERY OK source="settings" db=0.2ms idle=3.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:39:44.923 [debug] QUERY OK source="media_profiles" db=0.2ms idle=4.4ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:39:44.940 [info] Sent 200 in 25ms 13:39:45.000 [info] GET /sources/18 13:39:45.001 [debug] Processing with PinchflatWeb.Sources.SourceController.show/2 Parameters: %{"id" => "18"} Pipelines: [:browser] 13:39:45.002 [debug] QUERY OK source="sources" db=0.7ms queue=0.1ms idle=82.1ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [18] 13:39:45.004 [debug] QUERY OK source="media_profiles" db=0.6ms queue=0.1ms idle=82.8ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:39:45.007 [debug] QUERY OK source="tasks" db=2.2ms queue=0.2ms idle=83.5ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at" FROM "tasks" AS t0 INNER JOIN "oban_jobs" AS o1 ON o1."id" = t0."job_id" WHERE (t0."source_id" = ?) AND (o1."state" IN (?,?,?,?)) [18, "executing", "available", "scheduled", "retryable"] 13:39:45.008 [debug] QUERY OK source="oban_jobs" db=0.6ms queue=0.2ms idle=85.5ms SELECT o0."id", o0."state", o0."queue", o0."worker", o0."args", o0."meta", o0."tags", o0."errors", o0."attempt", o0."attempted_by", o0."max_attempts", o0."priority", o0."attempted_at", o0."cancelled_at", o0."completed_at", o0."discarded_at", o0."inserted_at", o0."scheduled_at", o0."id" FROM "oban_jobs" AS o0 WHERE (o0."id" IN (?,?)) [203008, 202177] 13:39:45.009 [debug] QUERY OK source="settings" db=0.3ms queue=0.1ms idle=85.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:39:45.010 [debug] QUERY OK source="settings" db=0.3ms queue=0.1ms idle=7.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:39:45.011 [debug] QUERY OK source="settings" db=0.3ms idle=7.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:39:45.015 [debug] QUERY OK source="sources" db=0.6ms idle=7.6ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [18] 13:39:45.020 [debug] QUERY OK source="media_items" db=4.4ms idle=7.3ms SELECT count(m0."id") FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [18] 13:39:45.022 [debug] QUERY OK source="media_items" db=1.2ms idle=11.3ms SELECT m0."id", m0."title", m0."uploaded_at", m0."prevent_download", m0."last_error" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) ORDER BY m0."uploaded_at" DESC LIMIT ? OFFSET ? [18, 10, 0] 13:39:45.023 [debug] QUERY OK source="sources" db=0.6ms idle=12.5ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [18] 13:39:45.024 [debug] QUERY OK source="media_items" db=0.5ms idle=12.1ms SELECT count(m0."id") FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND NOT (m0."media_filepath" IS NULL)) [18] 13:39:45.036 [debug] QUERY OK source="media_items" db=11.1ms idle=9.3ms SELECT m0."id", m0."title", m0."uploaded_at", m0."prevent_download", m0."last_error" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND NOT (m0."media_filepath" IS NULL)) ORDER BY m0."uploaded_at" DESC LIMIT ? OFFSET ? [18, 10, 0] 13:39:45.038 [debug] QUERY OK source="sources" db=0.6ms idle=17.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [18] 13:39:45.040 [debug] QUERY OK source="media_items" db=1.7ms idle=16.3ms SELECT count(m0."id") FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds"))))) [18] 13:39:45.040 [info] GET /sources/21 13:39:45.040 [debug] Processing with PinchflatWeb.Sources.SourceController.show/2 Parameters: %{"id" => "21"} Pipelines: [:browser] 13:39:45.040 [info] GET /sources/21/media/59074 13:39:45.041 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "59074", "source_id" => "21"} Pipelines: [:browser] 13:39:45.042 [debug] QUERY OK source="media_items" db=1.0ms idle=5.3ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [59074] 13:39:45.042 [debug] QUERY OK source="sources" db=1.3ms queue=0.1ms idle=16.6ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [21] 13:39:45.043 [debug] QUERY OK source="tasks" db=0.6ms queue=0.1ms idle=4.6ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [59074] 13:39:45.043 [debug] QUERY OK source="media_items" db=2.9ms idle=17.1ms SELECT m0."id", m0."title", m0."uploaded_at", m0."prevent_download", m0."last_error" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds"))))) ORDER BY m0."uploaded_at" DESC LIMIT ? OFFSET ? [18, 10, 0] 13:39:45.044 [debug] QUERY OK source="media_profiles" db=1.0ms idle=0.6ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:39:45.045 [debug] QUERY OK source="sources" db=1.9ms idle=2.4ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [21] 13:39:45.047 [info] Sent 200 in 47ms 13:39:45.089 [debug] QUERY OK source="oban_jobs" db=1.0ms queue=42.8ms idle=1.8ms SELECT o0."id", o0."state", o0."queue", o0."worker", o0."args", o0."meta", o0."tags", o0."errors", o0."attempt", o0."attempted_by", o0."max_attempts", o0."priority", o0."attempted_at", o0."cancelled_at", o0."completed_at", o0."discarded_at", o0."inserted_at", o0."scheduled_at", o0."id" FROM "oban_jobs" AS o0 WHERE (o0."id" = ?) [202146] 13:39:45.091 [debug] QUERY OK source="settings" db=1.4ms idle=45.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:39:45.092 [debug] QUERY OK source="tasks" db=47.3ms idle=2.0ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at" FROM "tasks" AS t0 INNER JOIN "oban_jobs" AS o1 ON o1."id" = t0."job_id" WHERE (t0."source_id" = ?) AND (o1."state" IN (?,?,?,?)) [21, "executing", "available", "scheduled", "retryable"] 13:39:45.093 [debug] QUERY OK source="settings" db=1.2ms queue=0.2ms idle=47.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:39:45.094 [debug] QUERY OK source="oban_jobs" db=1.5ms queue=0.2ms idle=47.6ms SELECT o0."id", o0."state", o0."queue", o0."worker", o0."args", o0."meta", o0."tags", o0."errors", o0."attempt", o0."attempted_by", o0."max_attempts", o0."priority", o0."attempted_at", o0."cancelled_at", o0."completed_at", o0."discarded_at", o0."inserted_at", o0."scheduled_at", o0."id" FROM "oban_jobs" AS o0 WHERE (o0."id" IN (?,?)) [203011, 202184] 13:39:45.095 [debug] QUERY OK source="settings" db=0.4ms queue=0.8ms idle=4.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:39:45.095 [debug] QUERY OK source="settings" db=0.7ms queue=0.1ms idle=3.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:39:45.096 [debug] QUERY OK source="settings" db=0.2ms queue=0.1ms idle=3.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:39:45.097 [debug] QUERY OK source="media_profiles" db=0.4ms idle=3.3ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:39:45.097 [debug] QUERY OK source="settings" db=0.3ms idle=2.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:39:45.101 [debug] QUERY OK source="sources" db=0.7ms queue=0.1ms idle=5.1ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [21] 13:39:45.104 [debug] QUERY OK source="media_items" db=1.6ms idle=6.4ms SELECT count(m0."id") FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [21] 13:39:45.106 [debug] QUERY OK source="media_items" db=1.9ms idle=8.1ms SELECT m0."id", m0."title", m0."uploaded_at", m0."prevent_download", m0."last_error" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) ORDER BY m0."uploaded_at" DESC LIMIT ? OFFSET ? [21, 10, 0] 13:39:45.108 [debug] QUERY OK source="sources" db=0.8ms idle=10.5ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [21] 13:39:45.109 [debug] QUERY OK source="media_items" db=0.2ms queue=0.1ms idle=11.4ms SELECT count(m0."id") FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND NOT (m0."media_filepath" IS NULL)) [21] 13:39:45.111 [info] Sent 200 in 70ms 13:39:45.114 [debug] QUERY OK source="media_items" db=4.1ms queue=0.1ms idle=8.0ms SELECT m0."id", m0."title", m0."uploaded_at", m0."prevent_download", m0."last_error" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND NOT (m0."media_filepath" IS NULL)) ORDER BY m0."uploaded_at" DESC LIMIT ? OFFSET ? [21, 10, 0] 13:39:45.118 [debug] QUERY OK source="sources" db=0.3ms idle=13.7ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [21] 13:39:45.120 [debug] QUERY OK source="media_items" db=1.1ms idle=12.1ms SELECT count(m0."id") FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds"))))) [21] 13:39:45.127 [debug] QUERY OK source="media_items" db=6.7ms queue=0.1ms idle=11.8ms SELECT m0."id", m0."title", m0."uploaded_at", m0."prevent_download", m0."last_error" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds"))))) ORDER BY m0."uploaded_at" DESC LIMIT ? OFFSET ? [21, 10, 0] 13:39:45.130 [info] Sent 200 in 89ms 13:39:45.184 [info] GET /sources/18/media/59071 13:39:45.185 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "59071", "source_id" => "18"} Pipelines: [:browser] 13:39:45.186 [debug] QUERY OK source="media_items" db=0.4ms queue=0.1ms idle=76.2ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [59071] 13:39:45.187 [debug] QUERY OK source="sources" db=0.5ms idle=72.7ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [18] 13:39:45.187 [debug] QUERY OK source="tasks" db=0.7ms idle=68.6ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [59071] 13:39:45.188 [debug] QUERY OK source="oban_jobs" db=0.2ms idle=67.7ms SELECT o0."id", o0."state", o0."queue", o0."worker", o0."args", o0."meta", o0."tags", o0."errors", o0."attempt", o0."attempted_by", o0."max_attempts", o0."priority", o0."attempted_at", o0."cancelled_at", o0."completed_at", o0."discarded_at", o0."inserted_at", o0."scheduled_at", o0."id" FROM "oban_jobs" AS o0 WHERE (o0."id" = ?) [202145] 13:39:45.188 [debug] QUERY OK source="settings" db=0.2ms idle=61.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:39:45.189 [debug] QUERY OK source="settings" db=0.3ms idle=2.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:39:45.190 [debug] QUERY OK source="settings" db=0.3ms idle=2.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:39:45.192 [debug] QUERY OK source="media_profiles" db=0.2ms idle=4.2ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:39:45.195 [info] GET /sources/5/media/58546 13:39:45.196 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "58546", "source_id" => "5"} Pipelines: [:browser] 13:39:45.197 [debug] QUERY OK source="media_items" db=1.0ms idle=8.3ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [58546] 13:39:45.199 [debug] QUERY OK source="tasks" db=0.4ms queue=0.2ms idle=9.7ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [58546] 13:39:45.199 [debug] QUERY OK source="sources" db=0.9ms queue=0.1ms idle=9.5ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [5] 13:39:45.200 [info] Sent 200 in 15ms 13:39:45.200 [debug] QUERY OK source="oban_jobs" db=0.2ms queue=0.1ms idle=10.2ms SELECT o0."id", o0."state", o0."queue", o0."worker", o0."args", o0."meta", o0."tags", o0."errors", o0."attempt", o0."attempted_by", o0."max_attempts", o0."priority", o0."attempted_at", o0."cancelled_at", o0."completed_at", o0."discarded_at", o0."inserted_at", o0."scheduled_at", o0."id" FROM "oban_jobs" AS o0 WHERE (o0."id" = ?) [201954] 13:39:45.201 [debug] QUERY OK source="settings" db=0.1ms idle=9.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:39:45.201 [debug] QUERY OK source="settings" db=0.1ms idle=4.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:39:45.202 [debug] QUERY OK source="settings" db=0.1ms idle=3.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:39:45.203 [debug] QUERY OK source="media_profiles" db=0.2ms idle=3.2ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:39:45.204 [info] GET /sources/5 13:39:45.204 [debug] Processing with PinchflatWeb.Sources.SourceController.show/2 Parameters: %{"id" => "5"} Pipelines: [:browser] 13:39:45.205 [info] Sent 200 in 9ms 13:39:45.206 [debug] QUERY OK source="sources" db=1.3ms idle=4.3ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [5] 13:39:45.207 [debug] QUERY OK source="media_profiles" db=0.5ms idle=5.4ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:39:45.208 [debug] QUERY OK source="tasks" db=0.6ms idle=6.0ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at" FROM "tasks" AS t0 INNER JOIN "oban_jobs" AS o1 ON o1."id" = t0."job_id" WHERE (t0."source_id" = ?) AND (o1."state" IN (?,?,?,?)) [5, "executing", "available", "scheduled", "retryable"] 13:39:45.209 [debug] QUERY OK source="oban_jobs" db=0.3ms idle=6.3ms SELECT o0."id", o0."state", o0."queue", o0."worker", o0."args", o0."meta", o0."tags", o0."errors", o0."attempt", o0."attempted_by", o0."max_attempts", o0."priority", o0."attempted_at", o0."cancelled_at", o0."completed_at", o0."discarded_at", o0."inserted_at", o0."scheduled_at", o0."id" FROM "oban_jobs" AS o0 WHERE (o0."id" = ?) [202963] 13:39:45.209 [debug] QUERY OK source="settings" db=0.3ms idle=5.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:39:45.210 [debug] QUERY OK source="settings" db=0.2ms idle=3.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:39:45.210 [debug] QUERY OK source="settings" db=0.1ms idle=3.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:39:45.214 [debug] QUERY OK source="sources" db=0.2ms idle=5.5ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [5] 13:39:45.246 [debug] QUERY OK source="media_items" db=30.7ms idle=6.0ms SELECT count(m0."id") FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [5] 13:39:45.254 [debug] QUERY OK source="media_items" db=7.3ms queue=0.1ms idle=36.7ms SELECT m0."id", m0."title", m0."uploaded_at", m0."prevent_download", m0."last_error" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) ORDER BY m0."uploaded_at" DESC LIMIT ? OFFSET ? [5, 10, 0] 13:39:45.256 [debug] QUERY OK source="sources" db=1.0ms queue=0.2ms idle=45.3ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [5] 13:39:45.259 [debug] QUERY OK source="media_items" db=1.7ms queue=0.1ms idle=46.9ms SELECT count(m0."id") FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND NOT (m0."media_filepath" IS NULL)) [5] 13:39:45.263 [debug] QUERY OK source="media_items" db=3.3ms queue=0.1ms idle=45.6ms SELECT m0."id", m0."title", m0."uploaded_at", m0."prevent_download", m0."last_error" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND NOT (m0."media_filepath" IS NULL)) ORDER BY m0."uploaded_at" DESC LIMIT ? OFFSET ? [5, 10, 0] 13:39:45.267 [debug] QUERY OK source="sources" db=0.7ms idle=20.4ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [5] 13:39:45.274 [debug] QUERY OK source="media_items" db=6.1ms queue=0.1ms idle=13.8ms SELECT count(m0."id") FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds"))))) [5] 13:39:45.309 [debug] QUERY OK source="media_items" db=34.4ms queue=0.2ms idle=17.8ms SELECT m0."id", m0."title", m0."uploaded_at", m0."prevent_download", m0."last_error" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds"))))) ORDER BY m0."uploaded_at" DESC LIMIT ? OFFSET ? [5, 10, 0] 13:39:45.313 [info] Sent 200 in 109ms 13:39:45.484 [info] GET /sources/27/media/58539 13:39:45.484 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "58539", "source_id" => "27"} Pipelines: [:browser] 13:39:45.485 [debug] QUERY OK source="media_items" db=0.7ms idle=221.5ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [58539] 13:39:45.486 [debug] QUERY OK source="tasks" db=0.4ms idle=219.2ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [58539] 13:39:45.487 [debug] QUERY OK source="sources" db=0.5ms idle=212.4ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [27] 13:39:45.487 [debug] QUERY OK source="settings" db=0.2ms idle=178.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:39:45.488 [debug] QUERY OK source="settings" db=0.2ms idle=178.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:39:45.489 [debug] QUERY OK source="settings" db=0.4ms idle=3.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:39:45.493 [debug] QUERY OK source="media_profiles" db=1.6ms queue=0.1ms idle=4.3ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:39:45.496 [info] Sent 200 in 12ms 13:39:45.503 [info] GET /sources/27 13:39:45.503 [debug] Processing with PinchflatWeb.Sources.SourceController.show/2 Parameters: %{"id" => "27"} Pipelines: [:browser] 13:39:45.505 [debug] QUERY OK source="sources" db=0.8ms idle=17.2ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [27] 13:39:45.506 [debug] QUERY OK source="media_profiles" db=0.6ms idle=17.7ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:39:45.507 [debug] QUERY OK source="tasks" db=0.4ms idle=18.1ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at" FROM "tasks" AS t0 INNER JOIN "oban_jobs" AS o1 ON o1."id" = t0."job_id" WHERE (t0."source_id" = ?) AND (o1."state" IN (?,?,?,?)) [27, "executing", "available", "scheduled", "retryable"] 13:39:45.508 [debug] QUERY OK source="settings" db=0.4ms queue=0.1ms idle=17.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:39:45.509 [debug] QUERY OK source="settings" db=0.4ms queue=0.1ms idle=15.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:39:45.510 [debug] QUERY OK source="settings" db=0.3ms idle=4.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:39:45.513 [debug] QUERY OK source="sources" db=0.5ms idle=6.7ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [27] 13:39:45.522 [debug] QUERY OK source="media_items" db=7.4ms idle=7.0ms SELECT count(m0."id") FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [27] 13:39:45.523 [info] GET /sources/27/media/58538 13:39:45.523 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "58538", "source_id" => "27"} Pipelines: [:browser] 13:39:45.524 [debug] QUERY OK source="media_items" db=0.6ms idle=14.8ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [58538] 13:39:45.524 [debug] QUERY OK source="media_items" db=2.0ms queue=0.3ms idle=14.1ms SELECT m0."id", m0."title", m0."uploaded_at", m0."prevent_download", m0."last_error" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) ORDER BY m0."uploaded_at" DESC LIMIT ? OFFSET ? [27, 10, 0] 13:39:45.525 [debug] QUERY OK source="tasks" db=0.3ms queue=0.1ms idle=14.8ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [58538] 13:39:45.526 [debug] QUERY OK source="sources" db=0.6ms queue=0.1ms idle=11.5ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [27] 13:39:45.527 [debug] QUERY OK source="settings" db=0.4ms idle=2.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:39:45.527 [debug] QUERY OK source="sources" db=1.2ms idle=4.8ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [27] 13:39:45.527 [debug] QUERY OK source="settings" db=0.4ms idle=2.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:39:45.528 [debug] QUERY OK source="media_items" db=0.2ms idle=2.5ms SELECT count(m0."id") FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND NOT (m0."media_filepath" IS NULL)) [27] 13:39:45.528 [debug] QUERY OK source="settings" db=0.2ms idle=2.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:39:45.534 [debug] QUERY OK source="media_profiles" db=4.6ms idle=2.1ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:39:45.535 [debug] QUERY OK source="media_items" db=7.0ms idle=1.6ms SELECT m0."id", m0."title", m0."uploaded_at", m0."prevent_download", m0."last_error" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND NOT (m0."media_filepath" IS NULL)) ORDER BY m0."uploaded_at" DESC LIMIT ? OFFSET ? [27, 10, 0] 13:39:45.537 [info] Sent 200 in 14ms 13:39:45.538 [debug] QUERY OK source="sources" db=0.8ms idle=9.1ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [27] 13:39:45.542 [debug] QUERY OK source="media_items" db=3.4ms idle=10.5ms SELECT count(m0."id") FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds"))))) [27] 13:39:45.546 [debug] QUERY OK source="media_items" db=3.7ms idle=13.9ms SELECT m0."id", m0."title", m0."uploaded_at", m0."prevent_download", m0."last_error" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds"))))) ORDER BY m0."uploaded_at" DESC LIMIT ? OFFSET ? [27, 10, 0] 13:39:45.548 [info] Sent 200 in 45ms 13:39:49.952 [info] GET /sources/11/media/58636 13:39:49.952 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "58636", "source_id" => "11"} Pipelines: [:browser] 13:39:49.953 [debug] QUERY OK source="media_items" db=0.6ms idle=630.5ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [58636] 13:39:49.955 [debug] QUERY OK source="tasks" db=1.0ms idle=606.7ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [58636] 13:39:49.955 [debug] QUERY OK source="sources" db=1.2ms idle=606.7ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [11] 13:39:49.955 [debug] QUERY OK source="oban_jobs" db=0.2ms idle=608.4ms SELECT o0."id", o0."state", o0."queue", o0."worker", o0."args", o0."meta", o0."tags", o0."errors", o0."attempt", o0."attempted_by", o0."max_attempts", o0."priority", o0."attempted_at", o0."cancelled_at", o0."completed_at", o0."discarded_at", o0."inserted_at", o0."scheduled_at", o0."id" FROM "oban_jobs" AS o0 WHERE (o0."id" = ?) [202008] 13:39:49.956 [debug] QUERY OK source="settings" db=0.2ms idle=609.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:39:49.957 [debug] QUERY OK source="settings" db=0.5ms idle=3.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:39:49.958 [debug] QUERY OK source="settings" db=0.3ms idle=3.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:39:49.961 [debug] QUERY OK source="media_profiles" db=0.4ms idle=5.6ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:39:49.983 [info] Sent 200 in 30ms 13:40:00.175 [info] {"source":"oban","duration":336,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 13:40:12.763 [info] {"source":"oban","duration":1908,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:40:33.090 [info] GET /media/af4db410-d7f6-41a8-a04e-fd5f041076f9/stream 13:40:33.090 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.stream/2 Parameters: %{"uuid" => "af4db410-d7f6-41a8-a04e-fd5f041076f9", "v" => "1767389407"} Pipelines: [:maybe_basic_auth] 13:40:33.092 [debug] QUERY OK source="media_items" db=1.1ms idle=1713.8ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."uuid" = ?) ["af4db410-d7f6-41a8-a04e-fd5f041076f9"] 13:40:33.109 [debug] Invalid range request for media item: af4db410-d7f6-41a8-a04e-fd5f041076f9 - serving full file 13:40:33.109 [info] Sent 200 in 19ms 13:40:42.767 [info] {"source":"oban","duration":3091,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:40:55.726 [info] GET /sources/opml.xml 13:40:55.727 [debug] Processing with PinchflatWeb.Podcasts.PodcastController.opml_feed/2 Parameters: %{"route_token" => "8ce88d66-3e61-447a-a5f3-d1b1865157bf"} Pipelines: [:maybe_basic_auth, :token_protected_route] 13:40:55.728 [debug] QUERY OK source="settings" db=0.4ms queue=0.3ms idle=1350.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:40:55.729 [debug] QUERY OK source="sources" db=0.4ms queue=0.4ms idle=1351.7ms SELECT s0."custom_name", s0."uuid" FROM "sources" AS s0 WHERE (s0."marked_for_deletion_at" IS NULL) ORDER BY s0."custom_name" [] 13:40:55.730 [info] Sent 200 in 3ms 13:41:00.176 [info] {"source":"oban","duration":663,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 13:41:06.810 [info] GET /sources/18/media/59071 13:41:06.810 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "59071", "prevent_download" => "true", "source_id" => "18"} Pipelines: [:browser] 13:41:06.811 [debug] QUERY OK source="media_items" db=0.4ms queue=0.1ms idle=1433.6ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [59071] 13:41:06.812 [debug] QUERY OK source="tasks" db=0.2ms idle=1434.7ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [59071] 13:41:06.812 [debug] QUERY OK source="sources" db=0.8ms idle=1434.9ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [18] 13:41:06.813 [debug] QUERY OK source="oban_jobs" db=0.6ms idle=1262.8ms SELECT o0."id", o0."state", o0."queue", o0."worker", o0."args", o0."meta", o0."tags", o0."errors", o0."attempt", o0."attempted_by", o0."max_attempts", o0."priority", o0."attempted_at", o0."cancelled_at", o0."completed_at", o0."discarded_at", o0."inserted_at", o0."scheduled_at", o0."id" FROM "oban_jobs" AS o0 WHERE (o0."id" = ?) [202145] 13:41:06.814 [debug] QUERY OK source="settings" db=0.6ms idle=261.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:41:06.815 [debug] QUERY OK source="settings" db=0.4ms idle=3.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:41:06.816 [debug] QUERY OK source="settings" db=0.6ms idle=4.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:41:06.818 [debug] QUERY OK source="media_profiles" db=0.6ms idle=5.1ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:41:06.844 [info] Sent 200 in 34ms 13:41:09.857 [info] GET /sources/11/media/58586 13:41:09.857 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "58586", "source_id" => "11"} Pipelines: [:browser] 13:41:09.859 [debug] QUERY OK source="media_items" db=1.2ms idle=1480.7ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [58586] 13:41:09.861 [debug] QUERY OK source="tasks" db=1.4ms idle=1482.6ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [58586] 13:41:09.861 [debug] QUERY OK source="sources" db=1.9ms idle=1482.7ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [11] 13:41:09.863 [debug] QUERY OK source="settings" db=0.7ms idle=1303.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:41:09.863 [debug] QUERY OK source="settings" db=0.4ms idle=301.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:41:09.865 [debug] QUERY OK source="settings" db=0.5ms idle=5.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:41:09.867 [debug] QUERY OK source="media_profiles" db=0.5ms idle=5.6ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:41:09.871 [info] Sent 200 in 14ms 13:41:12.770 [info] {"source":"oban","duration":1605,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:41:14.081 [info] GET /sources/27/edit 13:41:14.081 [debug] Processing with PinchflatWeb.Sources.SourceController.edit/2 Parameters: %{"id" => "27"} Pipelines: [:browser] 13:41:14.082 [debug] QUERY OK source="sources" db=0.5ms idle=1311.4ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [27] 13:41:14.083 [debug] QUERY OK source="media_profiles" db=0.4ms idle=705.8ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at" FROM "media_profiles" AS m0 ORDER BY m0."name" [] 13:41:14.084 [debug] QUERY OK source="settings" db=0.4ms queue=0.1ms idle=706.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:41:14.084 [info] GET /sources/12/edit 13:41:14.084 [debug] Processing with PinchflatWeb.Sources.SourceController.edit/2 Parameters: %{"id" => "12"} Pipelines: [:browser] 13:41:14.085 [debug] QUERY OK source="settings" db=0.9ms idle=707.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:41:14.085 [debug] QUERY OK source="sources" db=0.4ms idle=508.7ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [12] 13:41:14.086 [debug] QUERY OK source="media_profiles" db=0.6ms queue=0.1ms idle=3.6ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at" FROM "media_profiles" AS m0 ORDER BY m0."name" [] 13:41:14.087 [debug] QUERY OK source="settings" db=0.8ms idle=3.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:41:14.088 [debug] QUERY OK source="settings" db=0.9ms idle=2.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:41:14.089 [debug] QUERY OK source="settings" db=0.3ms queue=0.2ms idle=3.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:41:14.090 [debug] QUERY OK source="settings" db=0.3ms idle=4.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:41:14.091 [info] Sent 200 in 10ms 13:41:14.099 [info] Sent 200 in 14ms 13:41:42.772 [info] {"source":"oban","duration":1622,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:41:48.505 [info] GET /sources/11/media/58625 13:41:48.506 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "58625", "source_id" => "11"} Pipelines: [:browser] 13:41:48.507 [debug] QUERY OK source="media_items" db=1.0ms idle=1129.4ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [58625] 13:41:48.508 [debug] QUERY OK source="tasks" db=0.7ms idle=1131.0ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [58625] 13:41:48.509 [debug] QUERY OK source="sources" db=1.1ms idle=1131.1ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [11] 13:41:48.510 [debug] QUERY OK source="settings" db=0.4ms idle=850.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:41:48.511 [debug] QUERY OK source="settings" db=0.5ms idle=133.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:41:48.512 [debug] QUERY OK source="settings" db=0.5ms idle=4.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:41:48.515 [debug] QUERY OK source="media_profiles" db=0.3ms idle=5.5ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:41:48.519 [info] Sent 200 in 14ms 13:42:00.178 [info] {"source":"oban","duration":548,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 13:42:12.775 [info] {"source":"oban","duration":2808,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:42:15.753 [info] {"args":{"id":19},"id":202988,"meta":{},"system_time":1767408135752815524,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 13:42:15.757 [debug] QUERY OK source="sources" db=4.1ms queue=0.1ms idle=1376.2ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [19] 13:42:15.764 [debug] QUERY OK source="settings" db=6.9ms idle=1380.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:42:15.771 [debug] QUERY OK source="media_profiles" db=6.3ms idle=1025.5ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:42:15.774 [debug] QUERY OK source="settings" db=2.7ms idle=29.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:42:15.774 [debug] Fetching recent media IDs from YouTube API for playlist: UUaYhH3F6iB3KyW3afTHk5XA 13:42:15.775 [debug] QUERY OK source="settings" db=0.4ms idle=22.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:42:15.775 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 13:42:16.301 [debug] QUERY OK source="media_items" db=4.7ms idle=538.8ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND m0."media_id" IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [19, "mUlKcxGWvrQ", "ydfuNK4wSik", "x6cNQykYdEM", "SvyVS7zvquc", "l4O2F-1BWVI", "LYXADYUSTSg", "HpL40FdPGqk", "Wre5VWHxSug", "PdUu77SAH0I", "VCflrtok9hQ", "haEa6h8Ptf0", "c_-f7G9VSPw", "7rSLcNznix4", "OLXr-B-xwY8", "X05FPJq6_Oc", "kuL-trgOvq8", "WpBEifN8BYw", "YETks_YtraY", "bwKKd4N8Q2E", "PpNfOqbt0a8", "GyifuiQ6p48", "SkoFBCBASto", "-GNid2M6IC8", "muehDmLuJSw", "nBx5yssxPDk", "Q6vzDo6it9o", "AH9Z6_PlKhA", "dZfthyLyjDk", "j9UuSMaqX9Q", "jmoVFLUvyD0", "tKm_pnNEDsc", "boVAiizeh1M", "FNtBH6k7Jmo", "MDhN5WGOJ_o", "P-UQX5L_Ff0", "kys3lRzOOEY", "VDHSC2Dl8f0", "JU0uEdyPKlE", "0sSWAzq7rjc", "HOLXNrjWeuo"] 13:42:16.304 [debug] QUERY OK source="media_items" db=1.7ms idle=537.8ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [19] 13:42:16.309 [debug] QUERY OK source="tasks" db=1.2ms idle=532.4ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [203012, 19, ~U[2026-01-03 02:42:16Z], ~U[2026-01-03 02:42:16Z]] 13:42:16.310 [info] {"args":{"id":19},"id":202988,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":556372,"event":"job:stop","queue_time":483981,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 13:42:16.755 [info] {"args":{"id":23},"id":202989,"meta":{},"system_time":1767408136755363268,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 13:42:16.756 [debug] QUERY OK source="sources" db=0.4ms idle=446.9ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [23] 13:42:16.757 [debug] QUERY OK source="settings" db=0.2ms idle=446.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:42:16.757 [debug] QUERY OK source="media_profiles" db=0.2ms idle=438.0ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:42:16.757 [debug] QUERY OK source="settings" db=0.2ms idle=10.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:42:16.758 [debug] Fetching recent media IDs from YouTube API for playlist: UUSHvlfXUGYGWmDBg-afA5Bg 13:42:16.758 [debug] QUERY OK source="settings" db=0.2ms idle=2.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:42:16.758 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 13:42:17.087 [debug] QUERY OK source="media_items" db=1.8ms idle=328.8ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND m0."media_id" IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [23, "QASZbKPkS08", "pr7MMAFzHe8", "DG0BSdc6kKg", "o7DJZCU8q34", "G5A2QGwRmS4", "PER4GK9LCTA", "GzIS1WZFKtc", "24P4MFV-HrM", "6x6df3uagb4", "vALU9LhFKhE", "KF1grNBv5hU", "SLSPmp8-tXE", "53liPfHBgYQ", "zykmoM0qjbA", "boyfPk5qdBM", "H2VYuo7yb2o", "75_mYLpHDr4", "PSnlGB9aKVI", "vFBFSi2XqrQ", "X2z1ugOwR2A", "ePV6FKD1J9U", "ipxj_tl_6XY", "6l9-ctzSbCo", "xu3DTyCW3Yk", "wpAt0QaSk7U", "NXy9Sg0KIMY", "ml5AG_Q0y6w", "h_Uq6-e06y8", "37_rLteuwG4", "QCbf0kOJ8lA"] 13:42:17.089 [debug] QUERY OK source="media_items" db=0.9ms idle=331.6ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [23] 13:42:17.093 [debug] QUERY OK source="tasks" db=0.7ms idle=334.0ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [203013, 23, ~U[2026-01-03 02:42:17Z], ~U[2026-01-03 02:42:17Z]] 13:42:17.094 [info] {"args":{"id":23},"id":202989,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":337907,"event":"job:stop","queue_time":695935,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 13:42:17.759 [info] {"args":{"id":25},"id":202990,"meta":{},"system_time":1767408137759091802,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 13:42:17.760 [debug] QUERY OK source="sources" db=0.8ms idle=666.2ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [25] 13:42:17.761 [debug] QUERY OK source="settings" db=0.5ms idle=666.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:42:17.762 [debug] QUERY OK source="media_profiles" db=0.8ms idle=659.1ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:42:17.762 [debug] QUERY OK source="settings" db=0.5ms idle=10.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:42:17.762 [debug] Fetching recent media IDs from YouTube API for playlist: UUWstkeBSSIEgw6n5qnlXXuA 13:42:17.763 [debug] QUERY OK source="settings" db=0.3ms idle=3.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:42:17.763 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 13:42:18.088 [debug] QUERY OK source="media_items" db=2.5ms idle=325.4ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND m0."media_id" IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [25, "_sYSZI--9TA", "T7P86y4vYKs", "qWpf9ysgE04", "81v7r86tRRE", "a3LYS6jzPKA", "o5UKHwwdhmA", "6CCxzLKCHYA", "VONzFNo8uW4", "jJUysp-6qBs", "3KzmAquL3e4", "5cgK_MdFz7s", "bHpsXfutTFY", "kVhFNQj86Ng", "nyd40ZDhRw4"] 13:42:18.090 [debug] QUERY OK source="media_items" db=1.6ms idle=328.1ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [25] 13:42:18.094 [debug] QUERY OK source="tasks" db=0.5ms idle=330.3ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [203014, 25, ~U[2026-01-03 02:42:18Z], ~U[2026-01-03 02:42:18Z]] 13:42:18.095 [info] {"args":{"id":25},"id":202990,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":335537,"event":"job:stop","queue_time":684580,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 13:42:18.762 [info] {"args":{"id":17},"id":202991,"meta":{},"system_time":1767408138761882855,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 13:42:18.762 [debug] QUERY OK source="sources" db=0.4ms idle=667.7ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [17] 13:42:18.763 [debug] QUERY OK source="settings" db=0.3ms idle=667.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:42:18.763 [debug] QUERY OK source="media_profiles" db=0.3ms idle=660.6ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:42:18.764 [debug] QUERY OK source="settings" db=0.2ms idle=8.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:42:18.764 [debug] Fetching recent media IDs from YouTube API for playlist: UUEIwxahdLz7bap-VDs9h35A 13:42:18.764 [debug] QUERY OK source="settings" db=0.3ms idle=2.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:42:18.764 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 13:42:19.129 [debug] QUERY OK source="media_items" db=2.7ms idle=364.1ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND m0."media_id" IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [17, "kuMUquaeE6g", "-NzfTE8RI4w", "2eiYALLYBFE", "J_vXK9uvRf4", "tRDxBwverlI", "ymlNErMdI2k", "hM1l19H0tX8", "qg01MgiVT9k", "a3l6FdpltbQ", "NtZaP8VMv0c", "ayicYezINas", "zoTuSOEOvPw", "U7NHNT3M-tw", "B_PCZiNlmPw", "5glksNTKkZI", "iDsb-pxE3fA", "7PJi9KSDVbQ", "CfhsW1kaa2Q", "pleHURTV6fU", "T47s4L1Wje4", "LLlghvxVoH0", "K4542wtX8B4", "rf-efIZI_Dg", "OXvdwc6NDqM", "nGEHUbTtpPY", "0FybegjTkgw", "3TgdCWBV0pg", "Qjd4CREfYbo", "pqnyUemUDF4", "6-FQSEVc_cs", "BvoDuNZ9gLA", "AjJfefo41M8", "dJSGJ1-9XWw", "Mcg9GcilBfU", "MQSwyrjTV2M", "o-dZKBwbsis", "matUCqoiSGk", "0_VdGzEk5-M", "PAOpkv0fpik", "VdwSMytC7y4", "tw5tQPm-B00", "vkD3-msLIHg", "INq7pAmaUuk", "mfTVxFapdLw", "kY2YeM5fNDw", "lkWRiks6luc", "yiCM_i8r4RM", "XzBMFsZT5gM", "dKN6XatdVkY", ...] 13:42:19.135 [debug] QUERY OK source="media_items" db=3.2ms idle=368.5ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [17] 13:42:19.140 [debug] QUERY OK source="tasks" db=0.9ms idle=374.4ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [203015, 17, ~U[2026-01-03 02:42:19Z], ~U[2026-01-03 02:42:19Z]] 13:42:19.141 [info] {"args":{"id":17},"id":202991,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":378459,"event":"job:stop","queue_time":661125,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 13:42:23.186 [info] GET /sources/11/media/58619 13:42:23.186 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "58619", "source_id" => "11"} Pipelines: [:browser] 13:42:23.188 [debug] QUERY OK source="media_items" db=1.1ms idle=809.9ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [58619] 13:42:23.189 [debug] QUERY OK source="tasks" db=0.4ms idle=811.4ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [58619] 13:42:23.189 [debug] QUERY OK source="sources" db=1.0ms idle=811.4ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [11] 13:42:23.191 [debug] QUERY OK source="settings" db=0.4ms queue=0.1ms idle=813.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:42:23.192 [debug] QUERY OK source="settings" db=0.5ms queue=0.1ms idle=423.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:42:23.194 [debug] QUERY OK source="settings" db=0.3ms queue=0.1ms idle=5.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:42:23.196 [debug] QUERY OK source="media_profiles" db=0.4ms idle=6.4ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:42:23.200 [info] Sent 200 in 14ms 13:42:42.778 [info] {"source":"oban","duration":1548,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:42:53.917 [info] GET /sources/14/media/32649 13:42:53.918 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "32649", "source_id" => "14"} Pipelines: [:browser] 13:42:53.919 [debug] QUERY OK source="media_items" db=0.4ms queue=0.2ms idle=1541.9ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [32649] 13:42:53.921 [debug] QUERY OK source="tasks" db=0.5ms queue=0.1ms idle=1543.5ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [32649] 13:42:53.922 [debug] QUERY OK source="sources" db=0.8ms queue=0.1ms idle=1543.7ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [14] 13:42:53.923 [debug] QUERY OK source="settings" db=0.5ms idle=1072.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:42:53.924 [debug] QUERY OK source="settings" db=0.4ms queue=0.1ms idle=71.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:42:53.926 [debug] QUERY OK source="settings" db=0.4ms queue=0.1ms idle=5.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:42:53.927 [debug] QUERY OK source="media_profiles" db=0.4ms idle=5.9ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:42:53.931 [info] Sent 200 in 13ms 13:43:00.180 [info] {"source":"oban","duration":581,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 13:43:12.780 [info] {"source":"oban","duration":1533,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:43:22.215 [info] GET /sources/11/media/35227 13:43:22.216 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "35227", "source_id" => "11"} Pipelines: [:browser] 13:43:22.217 [debug] QUERY OK source="media_items" db=0.4ms queue=0.1ms idle=1289.1ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [35227] 13:43:22.218 [debug] QUERY OK source="tasks" db=0.3ms queue=0.1ms idle=840.9ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [35227] 13:43:22.218 [debug] QUERY OK source="sources" db=0.6ms idle=841.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [11] 13:43:22.219 [debug] QUERY OK source="oban_jobs" db=0.3ms idle=842.3ms SELECT o0."id", o0."state", o0."queue", o0."worker", o0."args", o0."meta", o0."tags", o0."errors", o0."attempt", o0."attempted_by", o0."max_attempts", o0."priority", o0."attempted_at", o0."cancelled_at", o0."completed_at", o0."discarded_at", o0."inserted_at", o0."scheduled_at", o0."id" FROM "oban_jobs" AS o0 WHERE (o0."id" IN (?,?)) [178157, 202023] 13:43:22.221 [debug] QUERY OK source="settings" db=0.2ms idle=291.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:43:22.221 [debug] QUERY OK source="settings" db=0.2ms idle=4.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:43:22.222 [debug] QUERY OK source="settings" db=0.2ms idle=4.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:43:22.224 [debug] QUERY OK source="media_profiles" db=0.2ms idle=5.4ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:43:22.228 [info] Sent 200 in 12ms 13:43:42.783 [info] {"source":"oban","duration":2684,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:43:46.017 [info] {"args":{"id":7},"id":202996,"meta":{},"system_time":1767408226016935459,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 13:43:46.018 [debug] QUERY OK source="sources" db=0.9ms idle=640.1ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [7] 13:43:46.019 [debug] QUERY OK source="settings" db=0.4ms idle=641.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:43:46.019 [debug] QUERY OK source="media_profiles" db=0.5ms idle=641.9ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:43:46.020 [debug] QUERY OK source="settings" db=0.4ms idle=10.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:43:46.020 [debug] Fetching recent media IDs from YouTube API for playlist: UUwnKziETDbHJtx78nIkfYug 13:43:46.021 [debug] QUERY OK source="settings" db=0.2ms idle=3.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:43:46.021 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 13:43:46.372 [debug] QUERY OK source="media_items" db=5.0ms idle=349.3ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND m0."media_id" IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [7, "mC5NdpSMDks", "ccV3u3D9ONE", "cVCDjEfPzII", "n0X2rqzKTgM", "dcuCvRNqmpY", "GG1qX8jHKGo", "k9wkleHFvo0", "CWoYVlMuUNQ", "xlfeieH4z38", "eZM2Ik-FHEU", "CtcTG8-qzbA", "6Mmj7mf1qlg", "InwVO9qBjqs", "1Hp-W2bpPrw", "VtE5sTpkn7k", "8dOJypt2F70", "Evm4t4prtWo", "taLzgvbrnv0", "rgCrnyf5JEI", "PHhc-48JT3U", "vFKjpNNjNGw", "VJQlOI70ubw", "E5cfNq0DO90", "DNBGSsZatbY", "pna1NyaHTls", "CUHao-vA98g", "cPN9BJe_RQw", "rCBt4XgCX-0", "f4g6KKGMmEI", "P_I5Jsc3xRw", "fPaU2l7RktM", "0PVwt01b6fs", "0qMDM4Y4Hwo", "Ld285PDsHvs", "p1mQC71wplA", "9k5JhKK6WlA", "WPxrifmtlQI", "nVNBmK7a1y8", "QDnMYztaxfI", "gxsaWhXG1Gg", "RMtkKiyrXic", "JKlJ6OW67Bk", "Sjmb8O-fRWI", "qZhD4G7ENSY", "OTWDzMjgsEY", "Y_eCu_pW6-4", "DplgNsjOPRg", "l6hHI3AVoYM", "joAhvj7dfsc", ...] 13:43:46.383 [debug] QUERY OK source="media_items" db=8.9ms idle=355.4ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [7] 13:43:46.391 [debug] QUERY OK source="tasks" db=0.9ms idle=369.0ms INSERT INTO "tasks" ("job_id","media_item_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [203016, 8350, ~U[2026-01-03 02:43:46Z], ~U[2026-01-03 02:43:46Z]] 13:43:46.399 [debug] QUERY OK source="tasks" db=1.3ms idle=7.6ms INSERT INTO "tasks" ("job_id","media_item_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [203017, 8380, ~U[2026-01-03 02:43:46Z], ~U[2026-01-03 02:43:46Z]] 13:43:46.404 [info] {"args":{"id":8350},"id":203016,"meta":{},"system_time":1767408226400862620,"max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 13:43:46.404 [info] {"args":{"id":8380},"id":203017,"meta":{},"system_time":1767408226400965585,"max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 13:43:46.406 [debug] QUERY OK source="media_items" db=2.0ms idle=5.6ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [8380] 13:43:46.407 [debug] QUERY OK source="media_items" db=2.5ms queue=0.2ms idle=8.2ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [8350] 13:43:46.407 [info] User scripts lifecyle file either not present or is empty. Skipping. 13:43:46.407 [info] User scripts lifecyle file either not present or is empty. Skipping. 13:43:46.407 [debug] QUERY OK source="tasks" db=1.2ms idle=5.5ms INSERT INTO "tasks" ("job_id","media_item_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [203018, 8401, ~U[2026-01-03 02:43:46Z], ~U[2026-01-03 02:43:46Z]] 13:43:46.409 [debug] QUERY OK source="sources" db=2.1ms idle=1.3ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [7] 13:43:46.410 [debug] QUERY OK source="sources" db=2.6ms queue=0.1ms idle=3.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [7] 13:43:46.410 [debug] QUERY OK source="media_profiles" db=0.5ms idle=2.9ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:43:46.411 [debug] QUERY OK source="media_profiles" db=1.4ms idle=2.7ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:43:46.412 [debug] QUERY OK source="media_items" db=1.9ms idle=1.1ms SELECT 1 FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) LIMIT 1 [8350] 13:43:46.413 [debug] QUERY OK source="media_items" db=0.6ms idle=2.5ms SELECT 1 FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) LIMIT 1 [8380] 13:43:46.414 [debug] QUERY OK source="tasks" db=0.5ms idle=2.4ms INSERT INTO "tasks" ("job_id","media_item_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [203019, 8418, ~U[2026-01-03 02:43:46Z], ~U[2026-01-03 02:43:46Z]] 13:43:46.415 [debug] QUERY OK source="media_metadata" db=0.9ms idle=1.7ms SELECT m0."id", m0."metadata_filepath", m0."thumbnail_filepath", m0."media_item_id", m0."inserted_at", m0."updated_at", m0."media_item_id" FROM "media_metadata" AS m0 WHERE (m0."media_item_id" = ?) [8350] 13:43:46.416 [debug] QUERY OK source="media_metadata" db=0.6ms idle=1.9ms SELECT m0."id", m0."metadata_filepath", m0."thumbnail_filepath", m0."media_item_id", m0."inserted_at", m0."updated_at", m0."media_item_id" FROM "media_metadata" AS m0 WHERE (m0."media_item_id" = ?) [8380] 13:43:46.417 [debug] QUERY OK source="media_profiles" db=0.5ms idle=2.1ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:43:46.418 [debug] QUERY OK source="media_profiles" db=2.3ms idle=2.0ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:43:46.418 [debug] QUERY OK source="settings" db=0.3ms idle=2.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:43:46.419 [debug] QUERY OK source="settings" db=1.2ms idle=1.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:43:46.419 [debug] QUERY OK source="settings" db=1.1ms idle=0.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:43:46.420 [debug] QUERY OK source="settings" db=1.1ms idle=1.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:43:46.421 [debug] Running yt-dlp command for action: get_downloadable_status 13:43:46.421 [debug] QUERY OK source="tasks" db=0.4ms idle=1.4ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [203020, 7, ~U[2026-01-03 02:43:46Z], ~U[2026-01-03 02:43:46Z]] 13:43:46.421 [debug] Running yt-dlp command for action: get_downloadable_status 13:43:46.422 [info] {"args":{"id":7},"id":202996,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":404709,"event":"job:stop","queue_time":586073,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 13:43:46.423 [debug] QUERY OK source="settings" db=0.1ms idle=3.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:43:46.423 [debug] QUERY OK source="settings" db=0.3ms idle=2.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:43:46.424 [debug] QUERY OK source="settings" db=0.3ms idle=2.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:43:46.424 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=bhkmFO8DikY --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/53/7d/537de2fb9ca071a8c318cfcec068e938afd449dff60a053d5e3c55fa1d0ca3d6.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 13:43:46.424 [debug] QUERY OK source="settings" db=0.8ms queue=0.1ms idle=2.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:43:46.425 [debug] QUERY OK source="settings" db=0.3ms idle=2.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:43:46.425 [debug] QUERY OK source="settings" db=0.2ms idle=2.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:43:46.426 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=aCES82xfgdw --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/21/ad/21ad0f9f08887f5e1cd8e41b688cb1fbe265c068b191d6a4b2137be162037ede.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 13:43:47.369 [info] GET /sources/14/media/32643 13:43:47.369 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "32643", "source_id" => "14"} Pipelines: [:browser] 13:43:47.375 [debug] QUERY OK source="media_items" db=4.3ms queue=0.2ms idle=946.0ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [32643] 13:43:47.377 [debug] QUERY OK source="tasks" db=1.4ms idle=950.4ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [32643] 13:43:47.377 [debug] QUERY OK source="sources" db=1.8ms idle=950.1ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [14] 13:43:47.379 [debug] QUERY OK source="settings" db=0.6ms idle=948.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:43:47.380 [debug] QUERY OK source="settings" db=0.5ms queue=0.6ms idle=365.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:43:47.382 [debug] QUERY OK source="settings" db=0.6ms idle=5.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:43:47.384 [debug] QUERY OK source="media_profiles" db=1.0ms idle=5.6ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:43:47.386 [info] Sent 200 in 17ms 13:43:51.527 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=aCES82xfgdw --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/21/ad/21ad0f9f08887f5e1cd8e41b688cb1fbe265c068b191d6a4b2137be162037ede.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 1 with: ERROR: [youtube] aCES82xfgdw: Sign in to confirm your age. This video may be inappropriate for some users. Use --cookies-from-browser or --cookies for the authentication. See https://github.com/yt-dlp/yt-dlp/wiki/FAQ#how-do-i-pass-cookies-to-yt-dlp for how to manually pass cookies. Also see https://github.com/yt-dlp/yt-dlp/wiki/Extractors#exporting-youtube-cookies for tips on effectively exporting YouTube cookies 13:43:51.529 [debug] QUERY OK source="settings" db=0.6ms queue=0.3ms idle=503.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:43:51.531 [debug] QUERY OK source="settings" db=0.3ms queue=0.2ms idle=153.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:43:51.532 [debug] Running yt-dlp command for action: get_downloadable_status 13:43:51.534 [debug] QUERY OK source="settings" db=0.2ms idle=156.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:43:51.534 [debug] QUERY OK source="settings" db=0.2ms queue=0.1ms idle=157.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:43:51.535 [debug] QUERY OK source="settings" db=0.3ms queue=0.1ms idle=157.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:43:51.536 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=aCES82xfgdw --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/28/09/2809cc59fc076b9bd3cd861ed82f5b7ed1353649133564195e4e5f4aa263f90d.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 13:43:51.657 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=bhkmFO8DikY --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/53/7d/537de2fb9ca071a8c318cfcec068e938afd449dff60a053d5e3c55fa1d0ca3d6.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 1 with: ERROR: [youtube] bhkmFO8DikY: Sign in to confirm your age. This video may be inappropriate for some users. Use --cookies-from-browser or --cookies for the authentication. See https://github.com/yt-dlp/yt-dlp/wiki/FAQ#how-do-i-pass-cookies-to-yt-dlp for how to manually pass cookies. Also see https://github.com/yt-dlp/yt-dlp/wiki/Extractors#exporting-youtube-cookies for tips on effectively exporting YouTube cookies 13:43:51.659 [debug] QUERY OK source="settings" db=0.6ms queue=0.2ms idle=128.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:43:51.660 [debug] QUERY OK source="settings" db=0.2ms queue=0.1ms idle=129.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:43:51.662 [debug] Running yt-dlp command for action: get_downloadable_status 13:43:51.664 [debug] QUERY OK source="settings" db=0.4ms idle=129.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:43:51.665 [debug] QUERY OK source="settings" db=0.2ms queue=0.1ms idle=129.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:43:51.665 [debug] QUERY OK source="settings" db=0.2ms queue=0.1ms idle=130.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:43:51.666 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=bhkmFO8DikY --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/61/1f/611f680137c81055a0aac180ae1b5ebd59dbaed609e3cc16fdf5258302366e2f.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 13:43:54.041 [info] {"args":{"id":24},"id":202997,"meta":{},"system_time":1767408234041087492,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 13:43:54.041 [debug] QUERY OK source="sources" db=0.3ms idle=664.4ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [24] 13:43:54.042 [debug] QUERY OK source="settings" db=0.2ms idle=665.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:43:54.042 [debug] QUERY OK source="media_profiles" db=0.3ms idle=665.4ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:43:54.043 [debug] QUERY OK source="settings" db=0.2ms idle=9.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:43:54.043 [debug] Fetching recent media IDs from YouTube API for playlist: UUNTjSZfAK117b2kFGNCJfdA 13:43:54.043 [debug] QUERY OK source="settings" db=0.1ms idle=2.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:43:54.044 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 13:43:54.425 [debug] QUERY OK source="media_items" db=3.7ms idle=379.7ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND m0."media_id" IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [24, "2J48c2sukbo", "zq9gpqgWFv8", "EWdphas_OP4", "-U2sQ3e3R-0", "XdytKwHuG_8", "t-hori2Io14", "Xbemvi42Ngs", "91m4MQw_sZI", "GfUIbPqAMQs", "4VpVt3zdvL8", "q6Kd5C7O-F8", "EV6DSqTOXM0", "mMvfBUNNKIY", "C215grXAMCk", "_x6TE7hbE1k", "vycMxLco0a0", "lJWhisaNv8E", "4Blxc8mVzQs", "ztqcWc5aaks", "0Dvn039qD8I", "Vx69evZOEAE", "4dzZ44-xVds", "Rews5WNxiNk", "f-BFFWzh9uE", "RfJSMWHO0tY", "gMeUOURvDP8", "LEiL1np9sSM", "F-QeDtQ8Gy4", "9FSIF281OAo", "Shav52BfzWk", "dsCfQ3y5tHQ", "0rpt5sMb7cw", "Fe7Y152ak3Y", "HEuablkqrCg", "BRUTYHBJ_Z4", "gpaV4bgEG-g", "ppjFdEbIS4g", "lEhEMRA17bg", "tpIXmmV4ib4", "LBYQ_NLVKCw", "JsdM3k3QiPc", "TNmSVjGyZx0", "OMVYZziNjhc", "uyfyFRvng3c", "YFBg5NNEW4g", "IkZe4pXDv0k", "ZT0in30U-ug", "kqDqSLOuxmM", "ZgLsNSWN46o", ...] 13:43:54.428 [debug] QUERY OK source="media_items" db=1.8ms idle=384.6ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [24] 13:43:54.432 [debug] QUERY OK source="tasks" db=0.5ms idle=387.5ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [203021, 24, ~U[2026-01-03 02:43:54Z], ~U[2026-01-03 02:43:54Z]] 13:43:54.433 [info] {"args":{"id":24},"id":202997,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":391113,"event":"job:stop","queue_time":607343,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 13:43:56.914 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=aCES82xfgdw --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/28/09/2809cc59fc076b9bd3cd861ed82f5b7ed1353649133564195e4e5f4aa263f90d.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 1 with: ERROR: [youtube] aCES82xfgdw: Sign in to confirm your age. This video may be inappropriate for some users. Use --cookies-from-browser or --cookies for the authentication. See https://github.com/yt-dlp/yt-dlp/wiki/FAQ#how-do-i-pass-cookies-to-yt-dlp for how to manually pass cookies. Also see https://github.com/yt-dlp/yt-dlp/wiki/Extractors#exporting-youtube-cookies for tips on effectively exporting YouTube cookies 13:43:56.914 [error] yt-dlp download error for media item #8350: "ERROR: [youtube] aCES82xfgdw: Sign in to confirm your age. This video may be inappropriate for some users. Use --cookies-from-browser or --cookies for the authentication. See https://github.com/yt-dlp/yt-dlp/wiki/FAQ#how-do-i-pass-cookies-to-yt-dlp for how to manually pass cookies. Also see https://github.com/yt-dlp/yt-dlp/wiki/Extractors#exporting-youtube-cookies for tips on effectively exporting YouTube cookies\n" 13:43:56.915 [error] yt-dlp download will not be retried: "ERROR: [youtube] aCES82xfgdw: Sign in to confirm your age. This video may be inappropriate for some users. Use --cookies-from-browser or --cookies for the authentication. See https://github.com/yt-dlp/yt-dlp/wiki/FAQ#how-do-i-pass-cookies-to-yt-dlp for how to manually pass cookies. Also see https://github.com/yt-dlp/yt-dlp/wiki/Extractors#exporting-youtube-cookies for tips on effectively exporting YouTube cookies\n" 13:43:56.916 [info] {"args":{"id":8350},"id":203016,"meta":{},"state":"success","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":10514764,"event":"job:stop","queue_time":395746,"attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 13:43:56.924 [info] {"args":{"id":8401},"id":203018,"meta":{},"system_time":1767408236924073183,"max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 13:43:56.925 [debug] QUERY OK source="media_items" db=0.3ms queue=0.1ms idle=547.3ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [8401] 13:43:56.925 [info] User scripts lifecyle file either not present or is empty. Skipping. 13:43:56.926 [debug] QUERY OK source="sources" db=0.4ms queue=0.1ms idle=548.4ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [7] 13:43:56.927 [debug] QUERY OK source="media_profiles" db=0.2ms queue=0.1ms idle=549.4ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:43:56.928 [debug] QUERY OK source="media_items" db=0.6ms queue=0.1ms idle=11.4ms SELECT 1 FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) LIMIT 1 [8401] 13:43:56.930 [debug] QUERY OK source="media_metadata" db=0.1ms idle=6.2ms SELECT m0."id", m0."metadata_filepath", m0."thumbnail_filepath", m0."media_item_id", m0."inserted_at", m0."updated_at", m0."media_item_id" FROM "media_metadata" AS m0 WHERE (m0."media_item_id" = ?) [8401] 13:43:56.930 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=bhkmFO8DikY --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/61/1f/611f680137c81055a0aac180ae1b5ebd59dbaed609e3cc16fdf5258302366e2f.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 1 with: ERROR: [youtube] bhkmFO8DikY: Sign in to confirm your age. This video may be inappropriate for some users. Use --cookies-from-browser or --cookies for the authentication. See https://github.com/yt-dlp/yt-dlp/wiki/FAQ#how-do-i-pass-cookies-to-yt-dlp for how to manually pass cookies. Also see https://github.com/yt-dlp/yt-dlp/wiki/Extractors#exporting-youtube-cookies for tips on effectively exporting YouTube cookies 13:43:56.931 [debug] QUERY OK source="media_profiles" db=0.3ms idle=5.6ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:43:56.931 [error] yt-dlp download error for media item #8380: "ERROR: [youtube] bhkmFO8DikY: Sign in to confirm your age. This video may be inappropriate for some users. Use --cookies-from-browser or --cookies for the authentication. See https://github.com/yt-dlp/yt-dlp/wiki/FAQ#how-do-i-pass-cookies-to-yt-dlp for how to manually pass cookies. Also see https://github.com/yt-dlp/yt-dlp/wiki/Extractors#exporting-youtube-cookies for tips on effectively exporting YouTube cookies\n" 13:43:56.931 [error] yt-dlp download will not be retried: "ERROR: [youtube] bhkmFO8DikY: Sign in to confirm your age. This video may be inappropriate for some users. Use --cookies-from-browser or --cookies for the authentication. See https://github.com/yt-dlp/yt-dlp/wiki/FAQ#how-do-i-pass-cookies-to-yt-dlp for how to manually pass cookies. Also see https://github.com/yt-dlp/yt-dlp/wiki/Extractors#exporting-youtube-cookies for tips on effectively exporting YouTube cookies\n" 13:43:56.931 [debug] QUERY OK source="settings" db=0.2ms idle=5.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:43:56.932 [debug] QUERY OK source="settings" db=0.7ms idle=4.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:43:56.933 [info] {"args":{"id":8380},"id":203017,"meta":{},"state":"success","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":10530909,"event":"job:stop","queue_time":395746,"attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 13:43:56.933 [debug] Running yt-dlp command for action: get_downloadable_status 13:43:56.935 [debug] QUERY OK source="settings" db=0.4ms idle=4.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:43:56.936 [debug] QUERY OK source="settings" db=0.4ms idle=4.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:43:56.936 [debug] QUERY OK source="settings" db=0.3ms idle=4.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:43:56.936 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=ZWSj0M132e8 --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/8d/20/8d20a10f055632d9ac6d687bc111101fbd27b33c8da32eef55ca2b3888098bd9.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 13:43:56.940 [info] {"args":{"id":8418},"id":203019,"meta":{},"system_time":1767408236940696604,"max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 13:43:56.941 [debug] QUERY OK source="media_items" db=0.6ms idle=7.8ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [8418] 13:43:56.941 [info] User scripts lifecyle file either not present or is empty. Skipping. 13:43:56.942 [debug] QUERY OK source="sources" db=0.5ms idle=6.4ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [7] 13:43:56.943 [debug] QUERY OK source="media_profiles" db=0.5ms idle=6.6ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:43:56.944 [debug] QUERY OK source="media_items" db=0.7ms idle=7.0ms SELECT 1 FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) LIMIT 1 [8418] 13:43:56.946 [debug] QUERY OK source="media_metadata" db=0.2ms idle=5.1ms SELECT m0."id", m0."metadata_filepath", m0."thumbnail_filepath", m0."media_item_id", m0."inserted_at", m0."updated_at", m0."media_item_id" FROM "media_metadata" AS m0 WHERE (m0."media_item_id" = ?) [8418] 13:43:56.946 [debug] QUERY OK source="media_profiles" db=0.4ms idle=4.4ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:43:56.947 [debug] QUERY OK source="settings" db=0.3ms idle=4.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:43:56.947 [debug] QUERY OK source="settings" db=0.1ms idle=4.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:43:56.948 [debug] Running yt-dlp command for action: get_downloadable_status 13:43:56.948 [debug] QUERY OK source="settings" db=0.1ms idle=4.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:43:56.949 [debug] QUERY OK source="settings" db=0.1ms idle=2.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:43:56.949 [debug] QUERY OK source="settings" db=0.1ms idle=2.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:43:56.949 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=v6jHhzj08yQ --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/79/45/7945db74a3de8c9b2dee2b92202a5c7e9fd56a16483d0b1a6dedb8a7089ea859.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 13:44:00.182 [info] {"source":"oban","duration":562,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 13:44:02.133 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=ZWSj0M132e8 --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/8d/20/8d20a10f055632d9ac6d687bc111101fbd27b33c8da32eef55ca2b3888098bd9.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 1 with: ERROR: [youtube] ZWSj0M132e8: Sign in to confirm your age. This video may be inappropriate for some users. Use --cookies-from-browser or --cookies for the authentication. See https://github.com/yt-dlp/yt-dlp/wiki/FAQ#how-do-i-pass-cookies-to-yt-dlp for how to manually pass cookies. Also see https://github.com/yt-dlp/yt-dlp/wiki/Extractors#exporting-youtube-cookies for tips on effectively exporting YouTube cookies 13:44:02.135 [debug] QUERY OK source="settings" db=0.6ms queue=0.1ms idle=1757.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:44:02.136 [debug] QUERY OK source="settings" db=0.4ms queue=0.1ms idle=1758.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:44:02.137 [debug] Running yt-dlp command for action: get_downloadable_status 13:44:02.139 [debug] QUERY OK source="settings" db=0.2ms idle=1083.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:44:02.140 [debug] QUERY OK source="settings" db=0.2ms idle=762.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:44:02.140 [debug] QUERY OK source="settings" db=0.2ms queue=0.1ms idle=80.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:44:02.141 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=ZWSj0M132e8 --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/17/45/1745d763424e7b1f17b43110fbdc36ca4da4e538b3f9e29e84d8d1685421bf6d.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 13:44:02.640 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=v6jHhzj08yQ --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/79/45/7945db74a3de8c9b2dee2b92202a5c7e9fd56a16483d0b1a6dedb8a7089ea859.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 1 with: ERROR: [youtube] v6jHhzj08yQ: Sign in to confirm your age. This video may be inappropriate for some users. Use --cookies-from-browser or --cookies for the authentication. See https://github.com/yt-dlp/yt-dlp/wiki/FAQ#how-do-i-pass-cookies-to-yt-dlp for how to manually pass cookies. Also see https://github.com/yt-dlp/yt-dlp/wiki/Extractors#exporting-youtube-cookies for tips on effectively exporting YouTube cookies 13:44:02.642 [debug] QUERY OK source="settings" db=0.7ms queue=0.2ms idle=505.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:44:02.643 [debug] QUERY OK source="settings" db=0.4ms queue=0.1ms idle=506.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:44:02.644 [debug] Running yt-dlp command for action: get_downloadable_status 13:44:02.647 [debug] QUERY OK source="settings" db=0.6ms idle=507.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:44:02.648 [debug] QUERY OK source="settings" db=0.5ms queue=0.2ms idle=507.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:44:02.649 [debug] QUERY OK source="settings" db=0.4ms queue=0.1ms idle=508.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:44:02.650 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=v6jHhzj08yQ --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/d0/f1/d0f1a08cb83db1dcd26b2e116001f74ac83ea0f406bd6aea6c32941e86146f6d.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 13:44:07.431 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=ZWSj0M132e8 --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/17/45/1745d763424e7b1f17b43110fbdc36ca4da4e538b3f9e29e84d8d1685421bf6d.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 1 with: ERROR: [youtube] ZWSj0M132e8: Sign in to confirm your age. This video may be inappropriate for some users. Use --cookies-from-browser or --cookies for the authentication. See https://github.com/yt-dlp/yt-dlp/wiki/FAQ#how-do-i-pass-cookies-to-yt-dlp for how to manually pass cookies. Also see https://github.com/yt-dlp/yt-dlp/wiki/Extractors#exporting-youtube-cookies for tips on effectively exporting YouTube cookies 13:44:07.431 [error] yt-dlp download error for media item #8401: "ERROR: [youtube] ZWSj0M132e8: Sign in to confirm your age. This video may be inappropriate for some users. Use --cookies-from-browser or --cookies for the authentication. See https://github.com/yt-dlp/yt-dlp/wiki/FAQ#how-do-i-pass-cookies-to-yt-dlp for how to manually pass cookies. Also see https://github.com/yt-dlp/yt-dlp/wiki/Extractors#exporting-youtube-cookies for tips on effectively exporting YouTube cookies\n" 13:44:07.432 [error] yt-dlp download will not be retried: "ERROR: [youtube] ZWSj0M132e8: Sign in to confirm your age. This video may be inappropriate for some users. Use --cookies-from-browser or --cookies for the authentication. See https://github.com/yt-dlp/yt-dlp/wiki/FAQ#how-do-i-pass-cookies-to-yt-dlp for how to manually pass cookies. Also see https://github.com/yt-dlp/yt-dlp/wiki/Extractors#exporting-youtube-cookies for tips on effectively exporting YouTube cookies\n" 13:44:07.433 [info] {"args":{"id":8401},"id":203018,"meta":{},"state":"success","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":10508411,"event":"job:stop","queue_time":10922776,"attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 13:44:07.903 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=v6jHhzj08yQ --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/d0/f1/d0f1a08cb83db1dcd26b2e116001f74ac83ea0f406bd6aea6c32941e86146f6d.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 1 with: ERROR: [youtube] v6jHhzj08yQ: Sign in to confirm your age. This video may be inappropriate for some users. Use --cookies-from-browser or --cookies for the authentication. See https://github.com/yt-dlp/yt-dlp/wiki/FAQ#how-do-i-pass-cookies-to-yt-dlp for how to manually pass cookies. Also see https://github.com/yt-dlp/yt-dlp/wiki/Extractors#exporting-youtube-cookies for tips on effectively exporting YouTube cookies 13:44:07.903 [error] yt-dlp download error for media item #8418: "ERROR: [youtube] v6jHhzj08yQ: Sign in to confirm your age. This video may be inappropriate for some users. Use --cookies-from-browser or --cookies for the authentication. See https://github.com/yt-dlp/yt-dlp/wiki/FAQ#how-do-i-pass-cookies-to-yt-dlp for how to manually pass cookies. Also see https://github.com/yt-dlp/yt-dlp/wiki/Extractors#exporting-youtube-cookies for tips on effectively exporting YouTube cookies\n" 13:44:07.903 [error] yt-dlp download will not be retried: "ERROR: [youtube] v6jHhzj08yQ: Sign in to confirm your age. This video may be inappropriate for some users. Use --cookies-from-browser or --cookies for the authentication. See https://github.com/yt-dlp/yt-dlp/wiki/FAQ#how-do-i-pass-cookies-to-yt-dlp for how to manually pass cookies. Also see https://github.com/yt-dlp/yt-dlp/wiki/Extractors#exporting-youtube-cookies for tips on effectively exporting YouTube cookies\n" 13:44:07.904 [info] {"args":{"id":8418},"id":203019,"meta":{},"state":"success","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":10962873,"event":"job:stop","queue_time":10938742,"attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 13:44:08.315 [info] GET /sources/13/media/12720/force_download 13:44:08.317 [debug] QUERY OK source="settings" db=0.5ms queue=0.2ms idle=883.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:44:08.318 [debug] QUERY OK source="settings" db=0.4ms queue=0.1ms idle=876.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:44:08.318 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 13:44:08.319 [error] #PID<0.10675.0> running PinchflatWeb.Endpoint (connection #PID<0.10674.0>, stream id 1) terminated Server: pinchflat.uiau7e.uncld.dev:80 (http) Request: GET /sources/13/media/12720/force_download ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/13/media/12720/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.10674.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/13/media/12720/force_download", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 37404}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYN2k5ZXRKNDFzaUpzYnVyVTdEOHJSMkhD.0Ewn8BufrmgLBcPASIBtAVHYF6u7kt1Dkt77GwFnjag", "from" => "gptbot(at)openai.com", "host" => "pinchflat.uiau7e.uncld.dev", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.3; +https://openai.com/gptbot)", "via" => "2.0 Caddy", "x-forwarded-for" => "74.7.227.183", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https", "x-openai-host-hash" => "454925582" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{ "_pinchflat_key" => "SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYN2k5ZXRKNDFzaUpzYnVyVTdEOHJSMkhD.0Ewn8BufrmgLBcPASIBtAVHYF6u7kt1Dkt77GwFnjag" }, halted: false, host: "pinchflat.uiau7e.uncld.dev", method: "GET", owner: #PID<0.10675.0>, params: %{}, path_info: ["sources", "13", "media", "12720", "force_download"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.uiau7e.uncld.dev", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {10, 210, 0, 2}, req_cookies: %{ "_pinchflat_key" => "SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYN2k5ZXRKNDFzaUpzYnVyVTdEOHJSMkhD.0Ewn8BufrmgLBcPASIBtAVHYF6u7kt1Dkt77GwFnjag" }, req_headers: [ {"accept", "*/*"}, {"accept-encoding", "gzip, br, deflate"}, {"cookie", "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYN2k5ZXRKNDFzaUpzYnVyVTdEOHJSMkhD.0Ewn8BufrmgLBcPASIBtAVHYF6u7kt1Dkt77GwFnjag"}, {"from", "gptbot(at)openai.com"}, {"host", "pinchflat.uiau7e.uncld.dev"}, {"user-agent", "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.3; +https://openai.com/gptbot)"}, {"via", "2.0 Caddy"}, {"x-forwarded-for", "74.7.227.183"}, {"x-forwarded-host", "pinchflat.uiau7e.uncld.dev"}, {"x-forwarded-proto", "https"}, {"x-openai-host-hash", "454925582"} ], request_path: "/sources/13/media/12720/force_download", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GIcYcA31fWjcqF0AANdC"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.10674.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/13/media/12720/force_download", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 37404}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYN2k5ZXRKNDFzaUpzYnVyVTdEOHJSMkhD.0Ewn8BufrmgLBcPASIBtAVHYF6u7kt1Dkt77GwFnjag", "from" => "gptbot(at)openai.com", "host" => "pinchflat.uiau7e.uncld.dev", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.3; +https://openai.com/gptbot)", "via" => "2.0 Caddy", "x-forwarded-for" => "74.7.227.183", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https", "x-openai-host-hash" => "454925582" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/13/media/12720/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.10674.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/13/media/12720/force_download", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 37404}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYN2k5ZXRKNDFzaUpzYnVyVTdEOHJSMkhD.0Ewn8BufrmgLBcPASIBtAVHYF6u7kt1Dkt77GwFnjag", "from" => "gptbot(at)openai.com", "host" => "pinchflat.uiau7e.uncld.dev", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.3; +https://openai.com/gptbot)", "via" => "2.0 Caddy", "x-forwarded-for" => "74.7.227.183", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https", "x-openai-host-hash" => "454925582" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{ " (truncated) 13:44:12.786 [info] {"source":"oban","duration":1429,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:44:27.677 [info] GET /sources/17/media/10262/force_download 13:44:27.678 [debug] QUERY OK source="settings" db=0.4ms queue=0.1ms idle=1301.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:44:27.679 [debug] QUERY OK source="settings" db=0.5ms queue=0.1ms idle=1302.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:44:27.680 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 13:44:27.681 [error] #PID<0.10679.0> running PinchflatWeb.Endpoint (connection #PID<0.10678.0>, stream id 1) terminated Server: pinchflat.uiau7e.uncld.dev:80 (http) Request: GET /sources/17/media/10262/force_download ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/17/media/10262/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.10678.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/17/media/10262/force_download", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 41760}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYN2k5ZXRKNDFzaUpzYnVyVTdEOHJSMkhD.0Ewn8BufrmgLBcPASIBtAVHYF6u7kt1Dkt77GwFnjag", "from" => "gptbot(at)openai.com", "host" => "pinchflat.uiau7e.uncld.dev", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.3; +https://openai.com/gptbot)", "via" => "2.0 Caddy", "x-forwarded-for" => "74.7.227.183", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https", "x-openai-host-hash" => "454925582" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{ "_pinchflat_key" => "SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYN2k5ZXRKNDFzaUpzYnVyVTdEOHJSMkhD.0Ewn8BufrmgLBcPASIBtAVHYF6u7kt1Dkt77GwFnjag" }, halted: false, host: "pinchflat.uiau7e.uncld.dev", method: "GET", owner: #PID<0.10679.0>, params: %{}, path_info: ["sources", "17", "media", "10262", "force_download"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.uiau7e.uncld.dev", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {10, 210, 0, 2}, req_cookies: %{ "_pinchflat_key" => "SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYN2k5ZXRKNDFzaUpzYnVyVTdEOHJSMkhD.0Ewn8BufrmgLBcPASIBtAVHYF6u7kt1Dkt77GwFnjag" }, req_headers: [ {"accept", "*/*"}, {"accept-encoding", "gzip, br, deflate"}, {"cookie", "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYN2k5ZXRKNDFzaUpzYnVyVTdEOHJSMkhD.0Ewn8BufrmgLBcPASIBtAVHYF6u7kt1Dkt77GwFnjag"}, {"from", "gptbot(at)openai.com"}, {"host", "pinchflat.uiau7e.uncld.dev"}, {"user-agent", "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.3; +https://openai.com/gptbot)"}, {"via", "2.0 Caddy"}, {"x-forwarded-for", "74.7.227.183"}, {"x-forwarded-host", "pinchflat.uiau7e.uncld.dev"}, {"x-forwarded-proto", "https"}, {"x-openai-host-hash", "454925582"} ], request_path: "/sources/17/media/10262/force_download", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GIcYdI__DtRgR30AANeC"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.10678.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/17/media/10262/force_download", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 41760}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYN2k5ZXRKNDFzaUpzYnVyVTdEOHJSMkhD.0Ewn8BufrmgLBcPASIBtAVHYF6u7kt1Dkt77GwFnjag", "from" => "gptbot(at)openai.com", "host" => "pinchflat.uiau7e.uncld.dev", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.3; +https://openai.com/gptbot)", "via" => "2.0 Caddy", "x-forwarded-for" => "74.7.227.183", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https", "x-openai-host-hash" => "454925582" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/17/media/10262/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.10678.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/17/media/10262/force_download", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 41760}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYN2k5ZXRKNDFzaUpzYnVyVTdEOHJSMkhD.0Ewn8BufrmgLBcPASIBtAVHYF6u7kt1Dkt77GwFnjag", "from" => "gptbot(at)openai.com", "host" => "pinchflat.uiau7e.uncld.dev", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.3; +https://openai.com/gptbot)", "via" => "2.0 Caddy", "x-forwarded-for" => "74.7.227.183", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https", "x-openai-host-hash" => "454925582" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{ " (truncated) 13:44:36.159 [info] {"args":{"id":3},"id":202998,"meta":{},"system_time":1767408276159316730,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 13:44:36.160 [debug] QUERY OK source="sources" db=0.4ms idle=782.6ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [3] 13:44:36.160 [debug] QUERY OK source="settings" db=0.3ms idle=783.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:44:36.161 [debug] QUERY OK source="media_profiles" db=0.3ms idle=784.0ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:44:36.162 [debug] QUERY OK source="settings" db=0.3ms idle=9.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:44:36.162 [debug] Fetching recent media IDs from YouTube API for playlist: UUISrVZmDM4x-Rq9mmNUw7Zw 13:44:36.162 [debug] QUERY OK source="settings" db=0.1ms idle=3.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:44:36.163 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 13:44:36.599 [debug] QUERY OK source="media_items" db=2.9ms idle=436.2ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND m0."media_id" IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [3, "CtF5dLHITYA", "SGJkxRdkRGg", "OUCt85aJaAA", "9gARPYZOka4", "-uH-Gi5tjEw", "qwUBBQKYX94", "s8VLDSQJ8nA", "EvPfr0lKkh4", "msXzAxF49gA", "hQCWaSvjkU0", "RcmjVsy3a-g", "xtuNc9vYJG4", "fj2tcg8OzsM", "2FZ4IfPACDM", "2Q9DzW20YJ8", "IVsWFGOE_mw", "vPxpMcv2Z4Y", "Zverj_ldlhY", "pQK8xasPd9Q", "_Yo7nh8u9pk", "4HzltsOvc0A", "a8UBLMm71JY", "3vqbr7-6Twk", "Df0iVjAKJZw", "n-X-AJpHUyI", "4CV7jI0e0Hw", "nqPoocCKci8", "5IIOdWnJGxg", "jkPL8BaM4ko", "CzeQtnRmUZ0", "9u-0d2IVZ3I", "igtvNmqsKM0", "47XDpW4nOzk", "8xvd7xSLQOo", "PnQPZMN0kIY", "feDph2WgRfI", "Z5FZ2XfX4Uc", "e0DxPopyrqM", "YvaK-Tjp2ck", "6_CctUPWX4I", "_DzHKw8yK58", "VnAkeiehyCg", "EFW1iCguDV8", "CEj7B1VzUwU", "3cy5fWUssjQ", "ZnjoTYmqLhs", "5IxtizzvaWw", "ZnBsMRl-EL0", "ET-M3T8E0PU", ...] 13:44:36.607 [debug] QUERY OK source="media_items" db=3.2ms idle=443.1ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [3] 13:44:36.610 [debug] QUERY OK source="tasks" db=0.4ms idle=447.1ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [203022, 3, ~U[2026-01-03 02:44:36Z], ~U[2026-01-03 02:44:36Z]] 13:44:36.611 [info] {"args":{"id":3},"id":202998,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":451421,"event":"job:stop","queue_time":561416,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 13:44:42.788 [info] {"source":"oban","duration":1769,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:44:43.179 [info] {"args":{"id":22},"id":202999,"meta":{},"system_time":1767408283179000656,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 13:44:43.179 [debug] QUERY OK source="sources" db=0.3ms idle=802.1ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [22] 13:44:43.180 [debug] QUERY OK source="settings" db=0.3ms idle=802.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:44:43.180 [debug] QUERY OK source="media_profiles" db=0.2ms idle=391.9ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:44:43.181 [debug] QUERY OK source="settings" db=0.1ms idle=8.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:44:43.181 [debug] Fetching recent media IDs from YouTube API for playlist: UUP1RHyOhO98Yn2rMbDBirxA 13:44:43.181 [debug] QUERY OK source="settings" db=0.2ms idle=2.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:44:43.181 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 13:44:43.565 [debug] QUERY OK source="media_items" db=2.5ms idle=383.4ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND m0."media_id" IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [22, "N5RzDzO54gQ", "5glegyagphQ", "VtiV_RfFqNM", "qNYyH7bMcbI", "MPdiQsg_zQ8", "4-VOc2Aich8", "gMrBK9rp6As", "p0lqYk8_uMI", "aKpQHxUiwxc", "KsuhL0zVo3I", "pCJcoGDsbxc", "_5AR-GKeqlk", "VcJG7rIOjb0", "vRzAE_0VnXQ", "uj_bcWLWMtw", "xRyiudwo_jM", "pTMRT4CRUoM", "W8_LEBSOsPg", "YZuP7d99kCw"] 13:44:43.568 [debug] QUERY OK source="settings" db=0.5ms queue=0.1ms idle=387.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:44:43.569 [debug] QUERY OK source="settings" db=0.3ms queue=0.1ms idle=388.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:44:43.569 [debug] Running yt-dlp command for action: get_media_attributes 13:44:43.570 [debug] QUERY OK source="settings" db=0.2ms idle=389.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:44:43.571 [debug] QUERY OK source="settings" db=0.4ms queue=0.2ms idle=389.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:44:43.572 [debug] QUERY OK source="settings" db=0.4ms idle=6.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:44:43.572 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=gMrBK9rp6As --simulate --skip-download --output /downloads/White Raven/Season %(upload_date>%Y)S/s%(upload_date>%Y)Se%(upload_date>%m%d)S00 - %(title)S.%(ext)S --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --print-to-file %(.{id,title,live_status,original_url,description,aspect_ratio,duration,upload_date,timestamp,playlist_index,filename})j /tmp/pinchflat/data/79/cc/79cca58254af5fb7abb81ba71779f20900712b9ac677062682080af2b0b08acd.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 13:44:48.233 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=gMrBK9rp6As --simulate --skip-download --output /downloads/White Raven/Season %(upload_date>%Y)S/s%(upload_date>%Y)Se%(upload_date>%m%d)S00 - %(title)S.%(ext)S --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --print-to-file %(.{id,title,live_status,original_url,description,aspect_ratio,duration,upload_date,timestamp,playlist_index,filename})j /tmp/pinchflat/data/79/cc/79cca58254af5fb7abb81ba71779f20900712b9ac677062682080af2b0b08acd.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 1 with: ERROR: [youtube] gMrBK9rp6As: Offline. 13:44:48.233 [error] Error creating media item 'gMrBK9rp6As' from URL: {:error, "ERROR: [youtube] gMrBK9rp6As: Offline.\n", 1} 13:44:48.234 [debug] QUERY OK source="media_items" db=0.5ms idle=856.5ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [22] 13:44:48.236 [debug] QUERY OK source="tasks" db=0.3ms idle=859.2ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [203023, 22, ~U[2026-01-03 02:44:48Z], ~U[2026-01-03 02:44:48Z]] 13:44:48.237 [info] {"args":{"id":22},"id":202999,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":5057732,"event":"job:stop","queue_time":67296,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 13:44:50.195 [info] {"args":{"id":1},"id":203000,"meta":{},"system_time":1767408290195332322,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 13:44:50.196 [debug] QUERY OK source="sources" db=0.5ms queue=0.1ms idle=818.7ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 13:44:50.197 [debug] QUERY OK source="settings" db=0.6ms idle=819.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:44:50.198 [debug] QUERY OK source="media_profiles" db=1.0ms idle=820.5ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:44:50.199 [debug] QUERY OK source="settings" db=0.8ms idle=10.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:44:50.200 [debug] Fetching recent media IDs from YouTube API for playlist: UU54SLBnD5k5U3Q6N__UjbAw 13:44:50.200 [debug] QUERY OK source="settings" db=0.5ms idle=4.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:44:50.200 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 13:44:50.549 [debug] QUERY OK source="media_items" db=6.4ms idle=346.7ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND m0."media_id" IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [1, "UYCKIroDVBY", "ynOiaE9f6NY", "At_WjGosTNM", "_s7ZzdPoVZE", "ulhKFEKXIEI", "YpQ2jupcrHk", "PetMnG6cCDw", "VdxlXCnA1DM", "uj2s7HZQigU", "rZ7Y_gPAHig", "LTmK8Ab6IFE", "sZKNVGI8xt0", "_PUZIf6VQto", "J2-1ZErtS7A", "OEyptSEM5Tw", "HLeY2_hJvRk", "DkZ5uXcDxjc", "zPWe_aBuNfM", "PZN18led4ok", "66F09ebI9gw", "Pfok4B_xyaI", "e5HEGCCadBU", "hYFsHfPquPg", "nKsnfEB29ek", "OpDh_O473Ms", "ZTtZ12XtQpg", "TphXloX3PEI", "4Qhp4VPP2Wo", "J5l7jvbp3u8", "uL_YQMkkbUg", "SAZ17l0EwxI", "fTa_T2pVwuk", "6HpTVfX0SvI", "XlIWsRyXL8U", "nM1GQNJU6LQ", "WVN1LNy1zgo", "0Fxf6_q7qHc", "dL0KPsy-Dww", "G43wJ7YyWzM", "yVy89TnL9Zg", "BR1VRJDu-gc", "-2HeoqiMC6s", "7WXyx51z5G8", "jCk-9S8PQyc", "vGEIHv1XelY", "rOI7HYGGHpo", "gNeGHhU6UaI", "gUlkwSHOT7Q", "tpf7TxliCxA", ...] 13:44:50.558 [debug] QUERY OK source="media_items" db=6.4ms idle=354.7ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [1] 13:44:50.562 [debug] QUERY OK source="tasks" db=0.7ms idle=360.5ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [203024, 1, ~U[2026-01-03 02:44:50Z], ~U[2026-01-03 02:44:50Z]] 13:44:50.563 [info] {"args":{"id":1},"id":203000,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":366978,"event":"job:stop","queue_time":556606,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 13:45:00.184 [info] {"source":"oban","duration":730,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 13:45:11.270 [info] {"args":{"id":2},"id":203001,"meta":{},"system_time":1767408311270244582,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 13:45:11.271 [debug] QUERY OK source="sources" db=0.4ms queue=0.1ms idle=893.9ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [2] 13:45:11.272 [debug] QUERY OK source="settings" db=0.4ms queue=0.1ms idle=894.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:45:11.273 [debug] QUERY OK source="media_profiles" db=0.4ms queue=0.1ms idle=895.7ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:45:11.274 [debug] QUERY OK source="settings" db=0.3ms queue=0.1ms idle=10.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:45:11.274 [debug] Fetching recent media IDs from YouTube API for playlist: UUeE3lj6pLX_gCd0Yvns517Q 13:45:11.275 [debug] QUERY OK source="settings" db=0.3ms queue=0.1ms idle=4.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:45:11.275 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 13:45:11.643 [debug] QUERY OK source="media_items" db=3.1ms idle=368.1ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND m0."media_id" IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [2, "0k6I__61QDc", "tAnxIOSrasI", "qGmURDZnDhc", "vBsPoGzQPxA", "TiJoEoREmdE", "C-CkKUyzQhA", "K1UWf6n1FmY", "9VKS1P-aXSc", "kt_SNpPa2w4", "oaXa30IfZMc", "pUBcfLBwPXw", "WkG24B0xw1E", "fBQxlA3KI5U", "HbeqOllBS9o", "li1fOq_qqHM", "rsqGEZeczYw", "d7HFMZOp0S4", "oipxUVJUZrc", "cTxE_oPyD9Q", "yJlKrUX8Bvk", "pYtoIdfLeHA", "qPMGKmyQ1AA", "7W651YDFjhc", "EfUXdMBXauI", "804ky1qeBuE", "DRMng-9g9Ng", "Nzp4LPVF_7M", "1psbOjlzkyA", "IwMM9c9Q0Pw", "xhbzG8V0eSA", "-CSyf5_q-XQ", "C__g4XPdYRY", "7-FRyPsqWG0", "0-fliBPsvZI", "xLZYbjMl3hY", "qs36351JQys", "-aty2xx6kTI", "Ty7NA3HvUsk", "w6xdmHLxzSM", "-5YmR5lvMlQ", "fFbRmFdCoYc", "XkPAB-oXAoU", "rTecGGMrRKc", "tHjU0F1najQ", "Z6otzigVvWM", "9m36Ncgctbg", "B1KUJbbpoK0", "rqGLjKlA_tM", "PZDZuoa3kJE", ...] 13:45:11.654 [debug] QUERY OK source="media_items" db=6.9ms idle=374.4ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [2] 13:45:11.657 [debug] QUERY OK source="tasks" db=0.4ms idle=381.8ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [203025, 2, ~U[2026-01-03 02:45:11Z], ~U[2026-01-03 02:45:11Z]] 13:45:11.658 [info] {"args":{"id":2},"id":203001,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":387465,"event":"job:stop","queue_time":378523,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 13:45:12.794 [info] {"source":"oban","duration":5116,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:45:28.709 [info] GET /sources/17/media/39302/force_download 13:45:28.710 [debug] QUERY OK source="settings" db=0.5ms idle=1333.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:45:28.711 [debug] QUERY OK source="settings" db=0.6ms idle=1333.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:45:28.712 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 13:45:28.713 [error] #PID<0.10691.0> running PinchflatWeb.Endpoint (connection #PID<0.10690.0>, stream id 1) terminated Server: pinchflat.uiau7e.uncld.dev:80 (http) Request: GET /sources/17/media/39302/force_download ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/17/media/39302/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.10690.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/17/media/39302/force_download", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 44906}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYN2k5ZXRKNDFzaUpzYnVyVTdEOHJSMkhD.0Ewn8BufrmgLBcPASIBtAVHYF6u7kt1Dkt77GwFnjag", "from" => "gptbot(at)openai.com", "host" => "pinchflat.uiau7e.uncld.dev", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.3; +https://openai.com/gptbot)", "via" => "2.0 Caddy", "x-forwarded-for" => "74.7.227.183", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https", "x-openai-host-hash" => "454925582" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{ "_pinchflat_key" => "SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYN2k5ZXRKNDFzaUpzYnVyVTdEOHJSMkhD.0Ewn8BufrmgLBcPASIBtAVHYF6u7kt1Dkt77GwFnjag" }, halted: false, host: "pinchflat.uiau7e.uncld.dev", method: "GET", owner: #PID<0.10691.0>, params: %{}, path_info: ["sources", "17", "media", "39302", "force_download"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.uiau7e.uncld.dev", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {10, 210, 0, 2}, req_cookies: %{ "_pinchflat_key" => "SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYN2k5ZXRKNDFzaUpzYnVyVTdEOHJSMkhD.0Ewn8BufrmgLBcPASIBtAVHYF6u7kt1Dkt77GwFnjag" }, req_headers: [ {"accept", "*/*"}, {"accept-encoding", "gzip, br, deflate"}, {"cookie", "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYN2k5ZXRKNDFzaUpzYnVyVTdEOHJSMkhD.0Ewn8BufrmgLBcPASIBtAVHYF6u7kt1Dkt77GwFnjag"}, {"from", "gptbot(at)openai.com"}, {"host", "pinchflat.uiau7e.uncld.dev"}, {"user-agent", "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.3; +https://openai.com/gptbot)"}, {"via", "2.0 Caddy"}, {"x-forwarded-for", "74.7.227.183"}, {"x-forwarded-host", "pinchflat.uiau7e.uncld.dev"}, {"x-forwarded-proto", "https"}, {"x-openai-host-hash", "454925582"} ], request_path: "/sources/17/media/39302/force_download", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GIcYgsXPGpTyFSEAANhi"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.10690.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/17/media/39302/force_download", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 44906}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYN2k5ZXRKNDFzaUpzYnVyVTdEOHJSMkhD.0Ewn8BufrmgLBcPASIBtAVHYF6u7kt1Dkt77GwFnjag", "from" => "gptbot(at)openai.com", "host" => "pinchflat.uiau7e.uncld.dev", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.3; +https://openai.com/gptbot)", "via" => "2.0 Caddy", "x-forwarded-for" => "74.7.227.183", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https", "x-openai-host-hash" => "454925582" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/17/media/39302/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.10690.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/17/media/39302/force_download", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 44906}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYN2k5ZXRKNDFzaUpzYnVyVTdEOHJSMkhD.0Ewn8BufrmgLBcPASIBtAVHYF6u7kt1Dkt77GwFnjag", "from" => "gptbot(at)openai.com", "host" => "pinchflat.uiau7e.uncld.dev", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.3; +https://openai.com/gptbot)", "via" => "2.0 Caddy", "x-forwarded-for" => "74.7.227.183", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https", "x-openai-host-hash" => "454925582" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{ " (truncated) 13:45:42.800 [info] {"source":"oban","duration":4111,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:46:00.186 [info] {"source":"oban","duration":368,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 13:46:07.439 [info] {"args":{"id":26},"id":203002,"meta":{},"system_time":1767408367439381932,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 13:46:07.440 [debug] QUERY OK source="sources" db=0.7ms idle=1010.7ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [26] 13:46:07.441 [debug] QUERY OK source="settings" db=0.4ms idle=63.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:46:07.442 [debug] QUERY OK source="media_profiles" db=0.6ms idle=64.6ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:46:07.443 [debug] QUERY OK source="settings" db=0.4ms idle=10.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:46:07.443 [debug] Fetching recent media IDs from YouTube API for playlist: UU6NY7eg1FxCfAVX58yL0cJw 13:46:07.443 [debug] QUERY OK source="settings" db=0.3ms idle=4.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:46:07.443 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 13:46:07.962 [debug] QUERY OK source="media_items" db=4.7ms idle=517.1ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND m0."media_id" IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [26, "o2tiLxanOd0", "3Hkalon06bY", "acwCbVzHnRM", "m3Cddar422Y", "QItYx18RK4M", "iFrwlymvtTM", "CBKzBKWhNmE", "twi0ZP1ZWew", "MChkfGtdrgI", "usOf_0SOPl8", "7CamgxCV_lg", "CYW3qAtbiSg", "hkLPA0MEUFk", "Z9APq63an58", "MA2a2BtDQtE", "a23hasz0yk8", "o4tK4PhiK_c", "2-lUv1_A_KU", "W6GGXQ4xVdg", "TOIuoWmEqxo", "JRXSDo6asDk", "iAodr4mipf0", "12wArTNB9dk", "CFZ0TtEbofU", "RwW6yAVtf6Q", "9RshF2jpgLo", "MV8U7XQUpnY", "G0o-l5G0M4s", "FVOkr5w0O0I", "1IFJive9Bvc", "kuc2kAgYD8M", "jHOE86EMHvA", "CjuPAweX08c", "LH0RNHxukJs", "o6OxlF4vAuw", "Qxfr7h-PzdA", "xU_1w6OSnac", "-6G1TNBxp08", "o-ripoq_oXU", "Uevcwu2GLMs", "BAoXgNQ_wRI", "p4NWPk9B20I", "XKxqsR_4w_I", "BNtAWc-vLX4", "ktw-dS-26Gk", "Idbcu-oVtDs", "JCxqgAhaJj4", "A0vzWxUO5TA", "6M0wfDl0LEI", ...] 13:46:07.975 [debug] QUERY OK source="media_items" db=8.3ms idle=525.1ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [26] 13:46:07.979 [debug] QUERY OK source="tasks" db=0.7ms idle=534.8ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [203026, 26, ~U[2026-01-03 02:46:07Z], ~U[2026-01-03 02:46:07Z]] 13:46:07.980 [info] {"args":{"id":26},"id":203002,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":540133,"event":"job:stop","queue_time":442015,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 13:46:12.805 [info] {"source":"oban","duration":4298,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:46:24.499 [info] {"args":{"id":58546},"id":201954,"meta":{},"system_time":1767408384499222527,"max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","event":"job:start","attempt":11,"tags":["media_item","media_fetching","show_in_dashboard"]} 13:46:24.500 [debug] QUERY OK source="media_items" db=0.5ms queue=0.1ms idle=1122.7ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [58546] 13:46:24.501 [info] User scripts lifecyle file either not present or is empty. Skipping. 13:46:24.502 [debug] QUERY OK source="sources" db=1.0ms idle=1016.7ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [5] 13:46:24.503 [debug] QUERY OK source="media_profiles" db=0.8ms idle=125.8ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:46:24.505 [debug] QUERY OK source="media_items" db=1.2ms queue=0.1ms idle=13.4ms SELECT 1 FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) LIMIT 1 [58546] 13:46:24.507 [debug] QUERY OK source="media_metadata" db=0.3ms idle=8.6ms SELECT m0."id", m0."metadata_filepath", m0."thumbnail_filepath", m0."media_item_id", m0."inserted_at", m0."updated_at", m0."media_item_id" FROM "media_metadata" AS m0 WHERE (m0."media_item_id" = ?) [58546] 13:46:24.508 [debug] QUERY OK source="media_profiles" db=0.4ms idle=7.4ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:46:24.509 [debug] QUERY OK source="settings" db=0.4ms idle=6.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:46:24.510 [debug] QUERY OK source="settings" db=0.5ms idle=5.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:46:24.510 [debug] Running yt-dlp command for action: get_downloadable_status 13:46:24.512 [debug] QUERY OK source="settings" db=0.3ms idle=6.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:46:24.513 [debug] QUERY OK source="settings" db=0.4ms idle=4.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:46:24.513 [debug] QUERY OK source="settings" db=0.4ms idle=4.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:46:24.513 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=CcUb7Ky2oSI --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/dd/38/dd381838a823bb552636a9050a3259b47b2384746e29c1719560af6ba3978151.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 13:46:29.692 [info] GET /sources/14/media/58722/force_download 13:46:29.694 [debug] QUERY OK source="settings" db=0.5ms queue=0.1ms idle=1316.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:46:29.695 [debug] QUERY OK source="settings" db=0.6ms queue=0.2ms idle=1317.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:46:29.695 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 13:46:29.697 [error] #PID<0.10701.0> running PinchflatWeb.Endpoint (connection #PID<0.10700.0>, stream id 1) terminated Server: pinchflat.uiau7e.uncld.dev:80 (http) Request: GET /sources/14/media/58722/force_download ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/14/media/58722/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.10700.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/14/media/58722/force_download", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 39532}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "from" => "gptbot(at)openai.com", "host" => "pinchflat.uiau7e.uncld.dev", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.3; +https://openai.com/gptbot)", "via" => "2.0 Caddy", "x-forwarded-for" => "74.7.227.183", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https", "x-openai-host-hash" => "454925582" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.uiau7e.uncld.dev", method: "GET", owner: #PID<0.10701.0>, params: %{}, path_info: ["sources", "14", "media", "58722", "force_download"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.uiau7e.uncld.dev", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {10, 210, 0, 2}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"accept-encoding", "gzip, br, deflate"}, {"from", "gptbot(at)openai.com"}, {"host", "pinchflat.uiau7e.uncld.dev"}, {"user-agent", "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.3; +https://openai.com/gptbot)"}, {"via", "2.0 Caddy"}, {"x-forwarded-for", "74.7.227.183"}, {"x-forwarded-host", "pinchflat.uiau7e.uncld.dev"}, {"x-forwarded-proto", "https"}, {"x-openai-host-hash", "454925582"} ], request_path: "/sources/14/media/58722/force_download", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GIcYkPisSCWM-ikAANlC"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.10700.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/14/media/58722/force_download", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 39532}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "from" => "gptbot(at)openai.com", "host" => "pinchflat.uiau7e.uncld.dev", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.3; +https://openai.com/gptbot)", "via" => "2.0 Caddy", "x-forwarded-for" => "74.7.227.183", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https", "x-openai-host-hash" => "454925582" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/14/media/58722/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.10700.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/14/media/58722/force_download", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 39532}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "from" => "gptbot(at)openai.com", "host" => "pinchflat.uiau7e.uncld.dev", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.3; +https://openai.com/gptbot)", "via" => "2.0 Caddy", "x-forwarded-for" => "74.7.227.183", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https", "x-openai-host-hash" => "454925582" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.uiau7e.uncld.dev", method: "GET", owner: #PID<0.10701.0>, params: %{}, path_info: ["sources", "14", "media", "58722", "force_download"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.uiau7e.uncld.dev", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {10, 210, 0, 2}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"accept-en (truncated) 13:46:31.426 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=CcUb7Ky2oSI --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/dd/38/dd381838a823bb552636a9050a3259b47b2384746e29c1719560af6ba3978151.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 13:46:31.427 [debug] Running yt-dlp command for action: download 13:46:31.427 [debug] QUERY OK source="settings" db=0.2ms idle=1050.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:46:31.428 [debug] QUERY OK source="settings" db=0.2ms idle=1050.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:46:31.428 [debug] QUERY OK source="settings" db=0.2ms idle=916.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:46:31.429 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=CcUb7Ky2oSI --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --embed-subs --sub-langs en --write-thumbnail --convert-thumbnail jpg --output thumbnail:/downloads/CodeSync/Season %(upload_date>%Y)S/s%(upload_date>%Y)Se%(upload_date>%m%d)S99 - %(title)S-thumb.%(ext)S --embed-thumbnail --convert-thumbnail jpg --write-info-json --clean-info-json --embed-metadata --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --sponsorblock-mark sponsor,intro,outro,selfpromo,preview,filler,interaction,music_offtopic --output /downloads/CodeSync/Season %(upload_date>%Y)S/s%(upload_date>%Y)Se%(upload_date>%m%d)S99 - %(title)S.%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/8b/c0/8bc0c66a7c62a54bde00b9f328855ebf221cccc9c809e4f2eef0f949d7f1d260.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 13:46:39.918 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=CcUb7Ky2oSI --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --embed-subs --sub-langs en --write-thumbnail --convert-thumbnail jpg --output thumbnail:/downloads/CodeSync/Season %(upload_date>%Y)S/s%(upload_date>%Y)Se%(upload_date>%m%d)S99 - %(title)S-thumb.%(ext)S --embed-thumbnail --convert-thumbnail jpg --write-info-json --clean-info-json --embed-metadata --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --sponsorblock-mark sponsor,intro,outro,selfpromo,preview,filler,interaction,music_offtopic --output /downloads/CodeSync/Season %(upload_date>%Y)S/s%(upload_date>%Y)Se%(upload_date>%m%d)S99 - %(title)S.%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/8b/c0/8bc0c66a7c62a54bde00b9f328855ebf221cccc9c809e4f2eef0f949d7f1d260.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 1 with: WARNING: The extractor specified to use impersonation for this download, but no impersonate target is available. If you encounter errors, then see https://github.com/yt-dlp/yt-dlp#impersonation for information on installing the required dependencies ERROR: Unable to download video subtitles for 'en': HTTP Error 429: Too Many Requests 13:46:39.918 [error] yt-dlp download error for media item #58546: "WARNING: The extractor specified to use impersonation for this download, but no impersonate target is available. If you encounter errors, then see https://github.com/yt-dlp/yt-dlp#impersonation for information on installing the required dependencies\nERROR: Unable to download video subtitles for 'en': HTTP Error 429: Too Many Requests\n" 13:46:39.920 [info] {"error":"** (Oban.PerformError) Pinchflat.Downloading.MediaDownloadWorker failed with {:error, :download_failed}","args":{"id":58546},"id":201954,"meta":{},"state":"failure","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":15419972,"event":"job:exception","queue_time":210785,"attempt":11,"tags":["media_item","media_fetching","show_in_dashboard"]} 13:46:41.562 [info] {"args":{"id":6},"id":203003,"meta":{},"system_time":1767408401562246318,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 13:46:41.563 [debug] QUERY OK source="sources" db=0.7ms idle=185.6ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [6] 13:46:41.564 [debug] QUERY OK source="settings" db=0.5ms idle=186.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:46:41.565 [debug] QUERY OK source="media_profiles" db=0.6ms idle=187.4ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:46:41.565 [debug] QUERY OK source="settings" db=0.4ms idle=10.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:46:41.565 [debug] Fetching recent media IDs from YouTube API for playlist: UUg0m_Ah8P_MQbnn77-vYnYw 13:46:41.566 [debug] QUERY OK source="settings" db=0.3ms idle=3.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:46:41.566 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 13:46:41.919 [debug] QUERY OK source="media_items" db=6.2ms idle=349.8ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND m0."media_id" IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [6, "9i6Qm3LV89c", "2PC3HH4izX4", "dJLpdoPNdZ8", "lqRHAbkn9bo", "nlYgNjtr904", "uHKLZ8LcCJA", "V3LW3EWUxqE", "XaTvV6zJEXk", "AjnHxtnxMhk", "vuJTLm11QmQ", "vUzRuvCi6lw", "NlxSd2y_gfI", "ivcFXtMGdE8", "m17ugzx_Ab4", "o5QiLKbHeMI", "moqdU9sMrRk", "Yi55tGTEMqQ", "rHliVvnQ5Pg", "nCZSTFM-v9k", "uasm2RENDH4", "musiLNtEyRY", "uSvqlME0IsI", "Yo0hmtg8LNc", "HOFD3h9Up9w", "uibJMXaSB7c", "NGq1EoY_r2I", "IL-UZlbO3zI", "-_txeeBP6dg", "iH7BiZvsczM", "rIKuiZVHfZo", "HRw20b6hb_s", "xOQPha-de4A", "L6IXwj-_X1k", "_7--BDD2pxk", "Xaq53-12iW8", "bfb-ZBwdvpo", "3DLbHio3ivA", "xhpwyar65ms", "UzEr8RISXds", "tHU6PeO4WDs", "2z1AaBGzA1g", "y-t3hyj7Mz8", "5ZUXEQ6d0dM", "pn8GF5HaKZc", "wH3XASrC2DA", "C_oeOAG0G5E", "c8gYHg1lZCg", "cPEXUpZ6CWk", "jST7T0L_k_w", ...] 13:46:41.925 [debug] QUERY OK source="media_items" db=3.8ms idle=357.4ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [6] 13:46:41.930 [debug] QUERY OK source="tasks" db=0.9ms idle=362.7ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [203027, 6, ~U[2026-01-03 02:46:41Z], ~U[2026-01-03 02:46:41Z]] 13:46:41.931 [info] {"args":{"id":6},"id":203003,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":368055,"event":"job:stop","queue_time":443879,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 13:46:42.809 [info] {"source":"oban","duration":3856,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:46:53.608 [info] {"args":{"id":10},"id":203004,"meta":{},"system_time":1767408413607962260,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 13:46:53.609 [debug] QUERY OK source="sources" db=0.7ms queue=0.1ms idle=231.6ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [10] 13:46:53.610 [debug] QUERY OK source="settings" db=0.4ms queue=0.1ms idle=232.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:46:53.611 [debug] QUERY OK source="media_profiles" db=0.6ms idle=233.7ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:46:53.612 [debug] QUERY OK source="settings" db=0.5ms queue=0.1ms idle=12.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:46:53.612 [debug] Fetching recent media IDs from YouTube API for playlist: UUmHz7DQbbkcY_UoWY8bBJLw 13:46:53.613 [debug] QUERY OK source="settings" db=0.3ms queue=0.1ms idle=5.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:46:53.613 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 13:46:54.017 [debug] QUERY OK source="media_items" db=5.5ms queue=0.1ms idle=401.6ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND m0."media_id" IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [10, "PhjtM9ePmYY", "BYRqpIciNLg", "KKoDQ42Fcpk", "AifAIqHezb8", "sjsS60OTXSQ", "KVouvdlUtGQ", "Th4RJNVZN3Q", "a9Zj-iWYC4w", "Z2_oFD9DMd0", "OW9WywZF_d4", "hFSwWzxrqUA", "XsPrNwyLDJM", "9NUcKPnPMEw", "GvP1jo9RstE", "8jul3DEwgMY", "e4K0Co-JeKQ", "wxoYf3KBlis", "YFQm8Hk73ug", "iu5rnQkfO6M", "RESslu3Bhuk", "vn9VDbacUgQ", "mLozqDnhqpQ", "GWXCCBsOMSg", "OXIpbrvFxfE", "hbZb1Q0mM7k", "lj2JTO1L1Tc", "dGjMw1SkmjU", "vBQFfmlTK_4", "91WqepC8kS0", "UUZfxQhKmfA", "aPsq5nqvhxg", "AJ7atBkisOU", "2fZ0nkP5dfo", "qKZXQGCLRJY", "F26dxTMmW10", "cYPuhhATDXc", "uLrOyIpjkZ8", "kDu56nXRqGQ", "I4lBTlClwww", "h23xksD0dN0", "SgameZUfeGo", "NPgbgiRJCxA", "-v88e4T8i_E", "HkgV_-nJOuE", "3h1vM0lIrpM", "gjExqY_iB38", "5ScP_aPBEiQ", "t5CkW-CKTZs", "gKKRYcy4BbU", ...] 13:46:54.022 [debug] QUERY OK source="settings" db=0.4ms idle=411.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:46:54.022 [debug] QUERY OK source="settings" db=0.4ms queue=0.1ms idle=410.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:46:54.023 [debug] Running yt-dlp command for action: get_media_attributes 13:46:54.024 [debug] QUERY OK source="settings" db=0.1ms idle=411.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:46:54.024 [debug] QUERY OK source="settings" db=0.1ms idle=410.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:46:54.024 [debug] QUERY OK source="settings" db=0.2ms idle=7.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:46:54.025 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=Z2_oFD9DMd0 --simulate --skip-download --output /downloads/Switch Angel/Season %(upload_date>%Y)S/s%(upload_date>%Y)Se%(upload_date>%m%d)S00 - %(title)S.%(ext)S --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --print-to-file %(.{id,title,live_status,original_url,description,aspect_ratio,duration,upload_date,timestamp,playlist_index,filename})j /tmp/pinchflat/data/cc/6e/cc6e67bbbc492798c54f480bca3b155e0d86686eeee750d74ad84be9e4fd2aba.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 13:46:58.664 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=Z2_oFD9DMd0 --simulate --skip-download --output /downloads/Switch Angel/Season %(upload_date>%Y)S/s%(upload_date>%Y)Se%(upload_date>%m%d)S00 - %(title)S.%(ext)S --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --print-to-file %(.{id,title,live_status,original_url,description,aspect_ratio,duration,upload_date,timestamp,playlist_index,filename})j /tmp/pinchflat/data/cc/6e/cc6e67bbbc492798c54f480bca3b155e0d86686eeee750d74ad84be9e4fd2aba.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 1 with: ERROR: [youtube] Z2_oFD9DMd0: This live event will begin in a few moments. 13:46:58.664 [error] Error creating media item 'Z2_oFD9DMd0' from URL: {:error, "ERROR: [youtube] Z2_oFD9DMd0: This live event will begin in a few moments.\n", 1} 13:46:58.668 [debug] QUERY OK source="media_items" db=2.8ms queue=0.2ms idle=1288.0ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [10] 13:46:58.674 [debug] QUERY OK source="tasks" db=0.9ms idle=1062.6ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [203028, 10, ~U[2026-01-03 02:46:58Z], ~U[2026-01-03 02:46:58Z]] 13:46:58.675 [info] {"args":{"id":10},"id":203004,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":5066726,"event":"job:stop","queue_time":736812,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 13:47:00.187 [info] {"source":"oban","duration":528,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 13:47:05.643 [info] {"args":{"id":9},"id":203005,"meta":{},"system_time":1767408425643633869,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 13:47:05.644 [debug] QUERY OK source="sources" db=0.4ms idle=1266.9ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [9] 13:47:05.645 [debug] QUERY OK source="settings" db=0.2ms idle=1010.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:47:05.645 [debug] QUERY OK source="media_profiles" db=0.3ms idle=268.4ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:47:05.646 [debug] QUERY OK source="settings" db=0.2ms idle=9.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:47:05.646 [debug] Fetching recent media IDs from YouTube API for playlist: UUy0Pr5u-MwGXXzp_GDd4m_g 13:47:05.646 [debug] QUERY OK source="settings" db=0.2ms idle=3.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:47:05.647 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 13:47:06.057 [debug] QUERY OK source="media_items" db=5.2ms idle=407.4ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND m0."media_id" IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [9, "97DBlIPSMkI", "V7Q9VnfzRqE", "Nub2m3iioSw", "Tpk6NNZubqU", "L4Eh-MtBFFk", "sa8p75KJqOc", "2gpPC0vsry0", "B2l4YfAav6M", "iL1qKxcaZnU", "NH5AAcLn03o", "8fOaCUvVQpY", "8aQ7sJ9EyaY", "ld0ngHU3YQ0", "uKzsA5kc8jw", "_A1dxw_T6dw", "TFVA0Bc5ajA", "IgFSOa0RBxs", "fGAe2cenBhs", "a6_0p8e42Y4", "vnR7jnJYN-k", "db6_ragog48", "SMKDYoXrZzw", "-fM_uGwlRlU", "kRxJ2g3T0zs", "GgU7L-z0kbA", "yFZJ6Qb8mDY", "YkyTbtgcfJU", "k01ARI01oMU", "ToFKhGfGgc0", "MU8JlJIuwh4", "IY36QIh6VG8", "brtcZFHW0P4", "A39Glu9I9fk", "Ib_1jixUkLw", "c9UIDwF7oS4", "CcSE-YHRJP4", "Tpmb_mTKuhs", "yNbz6f5dMLE", "BAVQcOWZi-Y", "Fa7RxeYNUTw", "teIoBQdGT5s", "UqykI_3CT-g", "vBeWkDTK6Eg", "qOp_nyKqmic", "fEqSlPpXHYk", "lII4lxNpPVg", "BaxD8BI3wI4", "me_afppRbyI", "C69B2k3fAvs", ...] 13:47:06.066 [debug] QUERY OK source="media_items" db=6.6ms idle=414.7ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [9] 13:47:06.069 [debug] QUERY OK source="tasks" db=0.4ms idle=421.6ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [203029, 9, ~U[2026-01-03 02:47:06Z], ~U[2026-01-03 02:47:06Z]] 13:47:06.069 [info] {"args":{"id":9},"id":203005,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":425552,"event":"job:stop","queue_time":359327,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 13:47:12.813 [info] {"source":"oban","duration":2418,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:47:22.683 [info] {"args":{"id":11},"id":203006,"meta":{},"system_time":1767408442683241645,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 13:47:22.684 [debug] QUERY OK source="sources" db=0.6ms idle=1307.2ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [11] 13:47:22.686 [debug] QUERY OK source="settings" db=0.4ms queue=0.1ms idle=1015.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:47:22.687 [debug] QUERY OK source="media_profiles" db=0.2ms idle=310.0ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:47:22.688 [debug] QUERY OK source="settings" db=0.3ms queue=0.1ms idle=12.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:47:22.688 [debug] Fetching recent media IDs from YouTube API for playlist: UUJ901NqoRaXMnIm7aOjLyuA 13:47:22.688 [debug] QUERY OK source="settings" db=0.2ms queue=0.1ms idle=5.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:47:22.689 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 13:47:23.220 [debug] QUERY OK source="media_items" db=4.3ms idle=531.3ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND m0."media_id" IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [11, "1ji7g8qZJ_4", "xP5WmZg7OMg", "HBoV87Jndh8", "-zpzRklxMEo", "9AX85j6Lp4M", "p2U9d4FWDaI", "hfT6XVSa2xE", "qBOKYwe8NzA", "Cf5jL5JNq7k", "bAV0y2acB9c", "XE6JvrChQ_Q", "Efv456Ks9ms", "qgiJ4C5s46U", "KaVC_mTFqHk", "M6gat-hai0I", "_xwFJzOtQv0", "Ao-M_YvfhXY", "SKHWQwf0ago", "gmuFtWZG3v8", "H4oeJ87TMt4", "rS2fDo6mhS8", "aOF6Pe_bTeI", "x8B3Z91qkoE", "fVvYTWAHoBQ", "8r6xqWTqcPQ", "k677A--BwGE", "CSTtrz8t1eg", "w6Ej3Iim4Ic", "jO8S8_KX6p0", "tslsVdOjWFM", "dckL2BCDYmQ", "E3N8_pRRtGM", "qeOEDUgy5xA", "MIPvNqPwMxc", "V2GelRPp5fg", "jWH5H6Y6T-A", "1ObIAwtqt9k", "yVdv1xVggZ4", "Pxpz4211gMI", "UEUAHI0AZu4", "gitCR-iTofw", "eTg2rHYqUZc", "QnOIm4U7Dzs", "RYNFRbP4OWQ", "R3kNCz120XM", "vMflt2fJZYw", "4DkhBa_L_4E", "4IqFTPw6Mzk", "AepfCktyPLk", ...] 13:47:23.235 [debug] QUERY OK source="media_items" db=11.3ms idle=537.5ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [11] 13:47:23.241 [debug] QUERY OK source="tasks" db=0.8ms idle=20.4ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [203030, 11, ~U[2026-01-03 02:47:23Z], ~U[2026-01-03 02:47:23Z]] 13:47:23.243 [info] {"args":{"id":11},"id":203006,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":558810,"event":"job:stop","queue_time":399987,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 13:47:30.953 [info] GET /sources/11/media/58636/force_download 13:47:30.954 [debug] QUERY OK source="settings" db=0.4ms queue=0.1ms idle=577.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:47:30.955 [debug] QUERY OK source="settings" db=0.2ms queue=0.1ms idle=578.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:47:30.955 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 13:47:30.956 [error] #PID<0.10713.0> running PinchflatWeb.Endpoint (connection #PID<0.10712.0>, stream id 1) terminated Server: pinchflat.uiau7e.uncld.dev:80 (http) Request: GET /sources/11/media/58636/force_download ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/11/media/58636/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.10712.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/11/media/58636/force_download", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 52580}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "from" => "gptbot(at)openai.com", "host" => "pinchflat.uiau7e.uncld.dev", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.3; +https://openai.com/gptbot)", "via" => "2.0 Caddy", "x-forwarded-for" => "74.7.227.183", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https", "x-openai-host-hash" => "454925582" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.uiau7e.uncld.dev", method: "GET", owner: #PID<0.10713.0>, params: %{}, path_info: ["sources", "11", "media", "58636", "force_download"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.uiau7e.uncld.dev", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {10, 210, 0, 2}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"accept-encoding", "gzip, br, deflate"}, {"from", "gptbot(at)openai.com"}, {"host", "pinchflat.uiau7e.uncld.dev"}, {"user-agent", "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.3; +https://openai.com/gptbot)"}, {"via", "2.0 Caddy"}, {"x-forwarded-for", "74.7.227.183"}, {"x-forwarded-host", "pinchflat.uiau7e.uncld.dev"}, {"x-forwarded-proto", "https"}, {"x-openai-host-hash", "454925582"} ], request_path: "/sources/11/media/58636/force_download", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GIcYnzwXZAWrOowAANsC"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.10712.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/11/media/58636/force_download", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 52580}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "from" => "gptbot(at)openai.com", "host" => "pinchflat.uiau7e.uncld.dev", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.3; +https://openai.com/gptbot)", "via" => "2.0 Caddy", "x-forwarded-for" => "74.7.227.183", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https", "x-openai-host-hash" => "454925582" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/11/media/58636/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.10712.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/11/media/58636/force_download", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 52580}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "from" => "gptbot(at)openai.com", "host" => "pinchflat.uiau7e.uncld.dev", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.3; +https://openai.com/gptbot)", "via" => "2.0 Caddy", "x-forwarded-for" => "74.7.227.183", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https", "x-openai-host-hash" => "454925582" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.uiau7e.uncld.dev", method: "GET", owner: #PID<0.10713.0>, params: %{}, path_info: ["sources", "11", "media", "58636", "force_download"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.uiau7e.uncld.dev", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {10, 210, 0, 2}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"accept-en (truncated) 13:47:42.816 [info] {"source":"oban","duration":2067,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:48:00.189 [info] {"source":"oban","duration":347,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 13:48:01.791 [info] {"args":{"id":15},"id":203007,"meta":{},"system_time":1767408481791325602,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 13:48:01.792 [debug] QUERY OK source="sources" db=0.4ms idle=1414.7ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [15] 13:48:01.792 [debug] QUERY OK source="settings" db=0.3ms idle=1011.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:48:01.793 [debug] QUERY OK source="media_profiles" db=0.3ms idle=416.0ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:48:01.793 [debug] QUERY OK source="settings" db=0.3ms idle=9.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:48:01.793 [debug] Fetching recent media IDs from YouTube API for playlist: UU5qRAYQmCLx8hFGIiTWSQvA 13:48:01.794 [debug] QUERY OK source="settings" db=0.1ms idle=2.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:48:01.794 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 13:48:02.267 [debug] QUERY OK source="media_items" db=2.5ms idle=472.7ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND m0."media_id" IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [15, "EMmIdkwn6a4", "EBT3EIoJpDc", "P2j2jM33fbk", "KuYhCywx8JM", "EteM8YNAFu8", "-KN9sfrroJA", "35D6yzUQM8I", "pIqvmN8ePkc", "rR5RqL2cjPE", "B2mmx85ZIsE", "b-jTeTJ1ekk", "Qa4dYWqfgmg", "TZZgrQEsl4c", "hMFEigXIhgA", "yf8ozrYeFEk", "QoCmQRZKU_c", "Qa9rFTiItTE", "Kxw9tq49VBM", "aLj4QgEf7gQ", "-D7c5td5vhw", "UNJUpex0blc", "Afa2PJq3okY", "r9A1srY7LdU", "m6YZoOWrLlk", "RKSlnQcuZt4", "qEjkDPJmKIo", "fZirHVq8wp0", "jdB56zAMJgE", "F92Oe7JuDtI", "luEgOCX58gw", "9CkNfdQpsuo", "eC3Mv474A8c", "mq6lsIgLLqY", "Wqmn4OTW6Fw", "4yYMQFLVRNc", "TsdMEmH2Lsw", "HQeTYLxz6iY", "V-JtebgnFoM", "2cXS3i36Kh8", "wznCZtGitN8", "2tYVGxZMOiQ", "9bxljq6ljbE", "9hHVjpo_HDA", "w8bqGx4ZtYQ", "yFYGd9irJ5k", "WTfhL2-cT1U", "LCR3ZsqWhuo", "Tj09jojsiaM", "_GZvVqjqlM0", ...] 13:48:02.273 [debug] QUERY OK source="media_items" db=3.4ms idle=477.5ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [15] 13:48:02.278 [debug] QUERY OK source="tasks" db=1.0ms idle=482.8ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [203031, 15, ~U[2026-01-03 02:48:02Z], ~U[2026-01-03 02:48:02Z]] 13:48:02.279 [info] {"args":{"id":15},"id":203007,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":487084,"event":"job:stop","queue_time":486711,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 13:48:06.812 [info] {"args":{"id":18},"id":203008,"meta":{},"system_time":1767408486812676071,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 13:48:06.813 [debug] QUERY OK source="sources" db=0.6ms idle=1435.9ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [18] 13:48:06.815 [debug] QUERY OK source="settings" db=0.6ms idle=1436.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:48:06.815 [debug] QUERY OK source="media_profiles" db=0.5ms idle=1016.6ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:48:06.816 [debug] QUERY OK source="settings" db=0.4ms idle=11.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:48:06.816 [debug] Fetching recent media IDs from YouTube API for playlist: UUuisDAMnvHMYuLFRedMgmVw 13:48:06.817 [debug] QUERY OK source="settings" db=0.3ms idle=4.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:48:06.817 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 13:48:07.244 [debug] QUERY OK source="media_items" db=4.9ms queue=0.1ms idle=425.1ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND m0."media_id" IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [18, "mf2Em7F_qDM", "PjvBtlIGGQU", "EF_PO-pALOQ", "j9eh7huEF4A", "y3FGuwfGzL0", "ZWH_eu9wdUE", "UccWWifa8jA", "0L8xWydKOhk", "CkSloYV3ay4", "SkQ7ywGW2HY", "QM3qu001Xdk", "jOTurZWIEmw", "pojDco-WhA4", "GD19Y1VYBKY", "cvViWSBLu-U", "wXm5ocXv9ho", "uB1Tk9eXQbk", "I7vb-PGArW4", "0h9qvAA5dfQ", "7yx-SecBATo", "oj1ySj7TVJk", "dtTdjRB4Q4g", "mpfcVNb8Mhs", "D3MFnCKv2Mc", "458_RTLWN2E", "W26HiyQ5k1s", "w4NDxPYJs1I", "cxuEV05UN7U", "5cPjR5FVDOw", "nJhbZNSrP4c", "X9Eu7mui35E", "wrgZHIpa6F0", "JEN7jfNqy1A", "v31DYiS2LbY", "iJfD5wWLvuM", "qPVTMbiyPLE", "rM_nvsztYlw", "IoD1j3ZG-SQ", "DDnqxbWvIgQ", "HIhF6C1yc7M", "DlNIxjiqQvs", "JO0-kOXXMEw", "2DihqSsed3w", "uDlvlF5iKz8", "v2jg_5WZ41o", "JekH9K8_SS8", "xVV_6qW_Ho8", "qYOABpvD49s", "VAw8zvyLmfE", ...] 13:48:07.251 [debug] QUERY OK source="media_items" db=3.7ms idle=432.7ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [18] 13:48:07.255 [debug] QUERY OK source="tasks" db=0.5ms idle=437.3ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [203032, 18, ~U[2026-01-03 02:48:07Z], ~U[2026-01-03 02:48:07Z]] 13:48:07.256 [info] {"args":{"id":18},"id":203008,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":442699,"event":"job:stop","queue_time":507378,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 13:48:12.819 [info] {"source":"oban","duration":1946,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:48:17.852 [info] {"args":{"id":16},"id":203009,"meta":{},"system_time":1767408497852409356,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 13:48:17.853 [debug] QUERY OK source="sources" db=0.8ms idle=1475.9ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [16] 13:48:17.854 [debug] QUERY OK source="settings" db=0.6ms idle=1477.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:48:17.855 [debug] QUERY OK source="media_profiles" db=0.6ms idle=1014.9ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:48:17.856 [debug] QUERY OK source="settings" db=0.5ms queue=0.1ms idle=12.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:48:17.857 [debug] Fetching recent media IDs from YouTube API for playlist: UUPPfK7Nq_yQR84rn1wcTXBg 13:48:17.857 [debug] QUERY OK source="settings" db=0.3ms idle=4.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:48:17.857 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 13:48:18.214 [debug] QUERY OK source="media_items" db=2.3ms idle=358.2ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND m0."media_id" IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [16, "BiTNUZ2zONY", "7pVLE7ggkcc", "YAh-xEteBz4", "6hNpMT5OwGo", "vx3oGZYqxm4", "7W_ZSNuS-4w", "CxUC2HXvO84", "RxapAZRYJ6I", "f2ainZL8Tzk", "KJtASaKc95g", "yBCh5cyI0Po", "dg_HQL3GBcY", "ZiVvXPpo0eE", "YO1TnWptv3o", "HwnBnsQBeOA", "CCE2v3oIa74", "OWVPYr9e76Y", "VApJtIyMEec", "XtOIQYVq26o", "gZL1KzV54Cw", "kmU-Eazta1s", "XXthHXEpEP8", "dPw_HkMgYI0", "rxq-TvgNCBU", "SaCbUtTuLhA", "TWLqSk4ZlN0", "p7_rduK5WA0", "lNZ56C-f4a8", "GlK3f1cs_l4", "Yabwyb14-BQ", "WupRwvJ7sOc", "MhpoNL1gZbw", "yUfm6AbtJ0g", "y8zfgIgZ4c0", "gOwjmKMmkV4", "aTiunvocl5c", "KebjX3KEgWQ", "0T2MYXljL5o", "i7sbS92R4cg", "66CDGzjLBtY", "T_W0FWiJmM8", "u_80rUKItGc", "C9_wibbg1Ug", "A4mg1ZUb-7s", "YmUfZt4Ku9s", "DoWsgrlIjYU", "gc5ojxTuwOg", "3AMdPMoGJus", "htYY8VwN-9g", ...] 13:48:18.218 [debug] QUERY OK source="media_items" db=1.4ms idle=361.6ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [16] 13:48:18.222 [debug] QUERY OK source="tasks" db=0.8ms idle=363.7ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [203033, 16, ~U[2026-01-03 02:48:18Z], ~U[2026-01-03 02:48:18Z]] 13:48:18.223 [info] {"args":{"id":16},"id":203009,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":369990,"event":"job:stop","queue_time":570430,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 13:48:32.840 [info] GET /sources/11/media/58586/force_download 13:48:32.842 [debug] QUERY OK source="settings" db=0.4ms queue=0.1ms idle=1464.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:48:32.842 [debug] QUERY OK source="settings" db=0.3ms queue=0.1ms idle=1465.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:48:32.843 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 13:48:32.843 [error] #PID<0.10722.0> running PinchflatWeb.Endpoint (connection #PID<0.10721.0>, stream id 1) terminated Server: pinchflat.uiau7e.uncld.dev:80 (http) Request: GET /sources/11/media/58586/force_download ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/11/media/58586/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.10721.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/11/media/58586/force_download", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 43402}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "from" => "gptbot(at)openai.com", "host" => "pinchflat.uiau7e.uncld.dev", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.3; +https://openai.com/gptbot)", "via" => "2.0 Caddy", "x-forwarded-for" => "74.7.227.183", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https", "x-openai-host-hash" => "454925582" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.uiau7e.uncld.dev", method: "GET", owner: #PID<0.10722.0>, params: %{}, path_info: ["sources", "11", "media", "58586", "force_download"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.uiau7e.uncld.dev", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {10, 210, 0, 2}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"accept-encoding", "gzip, br, deflate"}, {"from", "gptbot(at)openai.com"}, {"host", "pinchflat.uiau7e.uncld.dev"}, {"user-agent", "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.3; +https://openai.com/gptbot)"}, {"via", "2.0 Caddy"}, {"x-forwarded-for", "74.7.227.183"}, {"x-forwarded-host", "pinchflat.uiau7e.uncld.dev"}, {"x-forwarded-proto", "https"}, {"x-openai-host-hash", "454925582"} ], request_path: "/sources/11/media/58586/force_download", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GIcYraTa7sBoB_UAANyC"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.10721.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/11/media/58586/force_download", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 43402}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "from" => "gptbot(at)openai.com", "host" => "pinchflat.uiau7e.uncld.dev", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.3; +https://openai.com/gptbot)", "via" => "2.0 Caddy", "x-forwarded-for" => "74.7.227.183", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https", "x-openai-host-hash" => "454925582" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/11/media/58586/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.10721.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/11/media/58586/force_download", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 43402}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "from" => "gptbot(at)openai.com", "host" => "pinchflat.uiau7e.uncld.dev", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.3; +https://openai.com/gptbot)", "via" => "2.0 Caddy", "x-forwarded-for" => "74.7.227.183", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https", "x-openai-host-hash" => "454925582" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.uiau7e.uncld.dev", method: "GET", owner: #PID<0.10722.0>, params: %{}, path_info: ["sources", "11", "media", "58586", "force_download"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.uiau7e.uncld.dev", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {10, 210, 0, 2}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"accept-en (truncated) 13:48:42.821 [info] {"source":"oban","duration":1192,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:49:00.190 [info] {"source":"oban","duration":795,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 13:49:12.825 [info] {"source":"oban","duration":2943,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:49:20.016 [info] {"args":{"id":20},"id":203010,"meta":{},"system_time":1767408560015960886,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 13:49:20.017 [debug] QUERY OK source="sources" db=0.4ms idle=1639.5ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [20] 13:49:20.017 [debug] QUERY OK source="settings" db=0.5ms idle=1012.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:49:20.018 [debug] QUERY OK source="media_profiles" db=0.5ms idle=641.1ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:49:20.019 [debug] QUERY OK source="settings" db=0.3ms idle=9.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:49:20.019 [debug] Fetching recent media IDs from YouTube API for playlist: UU3HjB3X8jeENm46HCkI0Inw 13:49:20.019 [debug] QUERY OK source="settings" db=0.3ms idle=3.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:49:20.019 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 13:49:20.411 [debug] QUERY OK source="media_items" db=5.1ms idle=388.4ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND m0."media_id" IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [20, "CISwNCR8EXc", "EiIJqc5mV90", "8xJUjtnu72E", "Whh2rDVxvYg", "VybtaBZZqCg", "fuIOAraiRAY", "Ri4qqynMLHk", "xglNhNm95KQ", "5hEq1j_TsEY", "9f5iUsFWqoo", "0SXIhVupLZY", "3gAJpHP3yg4", "8zlnEbQgP74", "EnTFdexbFrM", "P3AU8vUwvAs", "4dQvS_n0uy4", "T5CRSwoP5_w", "cd8IcmBLpXc", "L4nAcT3QYkA", "5gskEcRE1uo", "1xywnh3DqFQ", "fXeqjU4tHqo", "YBMxdPCG_PY", "GB5_4JUB9hc", "EtAUdnvt0kc", "y-5D2HhLbso", "q8kP0pRFRMc", "8mQkTPoWfPo", "U5I92UivGzU", "UoMTKhqTf1U", "oIvzxlDViTo", "kCnh99-yZIs", "orABz0cfQZY", "VKt2PXkavyU", "kYwyB7o7BJs", "UB1FC4Nim1Y", "kN_eMzoJJmA", "4hdpejFLkPc", "ArSlY77uV1w", "2me_AlMFJh8", "OlKsICCPadE", "SjpJZ66rGaU", "iRZp_9irH2g", "CN9qeuO04A4", "BUnuun2sL-8", "XSIfSz3ZEGc", "hW5pHqeC1t4", "_cJV_l9tlaU", "ChT4bsCpwcU", ...] 13:49:20.424 [debug] QUERY OK source="media_items" db=9.8ms idle=396.8ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [20] 13:49:20.430 [debug] QUERY OK source="tasks" db=1.2ms idle=409.0ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [203034, 20, ~U[2026-01-03 02:49:20Z], ~U[2026-01-03 02:49:20Z]] 13:49:20.431 [info] {"args":{"id":20},"id":203010,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":414239,"event":"job:stop","queue_time":321630,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 13:49:23.026 [info] {"args":{"id":21},"id":203011,"meta":{},"system_time":1767408563026278353,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 13:49:23.027 [debug] QUERY OK source="sources" db=0.7ms idle=649.6ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [21] 13:49:23.028 [debug] QUERY OK source="settings" db=0.5ms idle=650.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:49:23.029 [debug] QUERY OK source="media_profiles" db=0.5ms idle=651.4ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:49:23.030 [debug] QUERY OK source="settings" db=0.5ms idle=10.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:49:23.030 [debug] Fetching recent media IDs from YouTube API for playlist: UU2-i3KuYoODXsM99Z3-Gm0A 13:49:23.030 [debug] QUERY OK source="settings" db=0.4ms idle=4.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:49:23.031 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 13:49:23.579 [debug] QUERY OK source="media_items" db=4.5ms queue=0.1ms idle=546.5ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND m0."media_id" IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [21, "J5rMffRWoaE", "SpNjg65s29I", "8YoFYb6ahAc", "2z0gjjea0mQ", "2d3dU0R4Sk4", "_TFHZ9W3Jt8", "dqjpFcJG5Cc", "Pm0PXgXMNVY", "YXwzRiYgHHc", "mUK6UT_7PZo", "nE49QFWymsI", "WY4rfxfFsVA", "LHyVvVpA0xM", "HYIwk4qL2os", "RZBQe4RLdZ8", "DN5ES5PlK6c", "OaO4UInG53A", "UqcJk1mPcnQ", "NqSJZesKtFs", "3bsFFOwsQzA", "EaXJ1rQ2v5k", "jnV5Ptgg1Xc", "rXghFt-g_OM", "Y_MU28GV-M0", "OZ1fXb4gcv0", "t7JeRNvBG40", "XG41sdzNz7I", "rQFtIiVV7RA", "TviKrv1FTzc", "0iH3eN6DUbM", "AjzhbnNiJO0", "3Y2fdnw7AwM", "8Z_XpRjS2oo", "RY1Nnw_qOGc", "pUB0TU9UQhI", "eVR3mgSxjUk", "5hGYObRZMPQ", "4MemHNHi_YE", "yM6u1-_JNXo", "VGLq2Tjokl4", "XpV4r2KB0UA", "cvrpvL1kO_8", "Q4kS9l81A0k", "Mq47ro7Pc00", "GAu1Y-5EPeM", "dNIc1vTlbDc", "S1zqKNfggRQ", "zquTrv6kv-U", "-H6sKLcAL9I", ...] 13:49:23.591 [debug] QUERY OK source="media_items" db=8.3ms idle=554.8ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [21] 13:49:23.597 [debug] QUERY OK source="tasks" db=1.0ms idle=565.3ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [203035, 21, ~U[2026-01-03 02:49:23Z], ~U[2026-01-03 02:49:23Z]] 13:49:23.598 [info] {"args":{"id":21},"id":203011,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":571338,"event":"job:stop","queue_time":277207,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 13:49:38.685 [info] GET /sources/11/media/58625/force_download 13:49:38.686 [debug] QUERY OK source="settings" db=0.5ms idle=1308.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:49:38.687 [debug] QUERY OK source="settings" db=0.7ms idle=1309.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:49:38.687 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 13:49:38.688 [error] #PID<0.10731.0> running PinchflatWeb.Endpoint (connection #PID<0.10730.0>, stream id 1) terminated Server: pinchflat.uiau7e.uncld.dev:80 (http) Request: GET /sources/11/media/58625/force_download ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/11/media/58625/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.10730.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/11/media/58625/force_download", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 38568}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "from" => "gptbot(at)openai.com", "host" => "pinchflat.uiau7e.uncld.dev", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.3; +https://openai.com/gptbot)", "via" => "2.0 Caddy", "x-forwarded-for" => "74.7.227.183", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https", "x-openai-host-hash" => "454925582" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.uiau7e.uncld.dev", method: "GET", owner: #PID<0.10731.0>, params: %{}, path_info: ["sources", "11", "media", "58625", "force_download"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.uiau7e.uncld.dev", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {10, 210, 0, 2}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"accept-encoding", "gzip, br, deflate"}, {"from", "gptbot(at)openai.com"}, {"host", "pinchflat.uiau7e.uncld.dev"}, {"user-agent", "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.3; +https://openai.com/gptbot)"}, {"via", "2.0 Caddy"}, {"x-forwarded-for", "74.7.227.183"}, {"x-forwarded-host", "pinchflat.uiau7e.uncld.dev"}, {"x-forwarded-proto", "https"}, {"x-openai-host-hash", "454925582"} ], request_path: "/sources/11/media/58625/force_download", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GIcYvPmBOpdRKEIAAN2C"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.10730.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/11/media/58625/force_download", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 38568}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "from" => "gptbot(at)openai.com", "host" => "pinchflat.uiau7e.uncld.dev", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.3; +https://openai.com/gptbot)", "via" => "2.0 Caddy", "x-forwarded-for" => "74.7.227.183", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https", "x-openai-host-hash" => "454925582" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/11/media/58625/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.10730.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/11/media/58625/force_download", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 38568}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "from" => "gptbot(at)openai.com", "host" => "pinchflat.uiau7e.uncld.dev", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.3; +https://openai.com/gptbot)", "via" => "2.0 Caddy", "x-forwarded-for" => "74.7.227.183", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https", "x-openai-host-hash" => "454925582" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.uiau7e.uncld.dev", method: "GET", owner: #PID<0.10731.0>, params: %{}, path_info: ["sources", "11", "media", "58625", "force_download"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.uiau7e.uncld.dev", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {10, 210, 0, 2}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"accept-en (truncated) 13:49:42.829 [info] {"source":"oban","duration":2925,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:50:00.192 [info] {"source":"oban","duration":575,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 13:50:12.832 [info] {"source":"oban","duration":1895,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:50:40.607 [info] GET /sources/11/media/58619/force_download 13:50:40.608 [debug] QUERY OK source="settings" db=0.4ms queue=0.1ms idle=1230.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:50:40.609 [debug] QUERY OK source="settings" db=0.5ms queue=0.1ms idle=351.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:50:40.609 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 13:50:40.610 [error] #PID<0.10738.0> running PinchflatWeb.Endpoint (connection #PID<0.10737.0>, stream id 1) terminated Server: pinchflat.uiau7e.uncld.dev:80 (http) Request: GET /sources/11/media/58619/force_download ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/11/media/58619/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.10737.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/11/media/58619/force_download", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 41970}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "from" => "gptbot(at)openai.com", "host" => "pinchflat.uiau7e.uncld.dev", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.3; +https://openai.com/gptbot)", "via" => "2.0 Caddy", "x-forwarded-for" => "74.7.227.183", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https", "x-openai-host-hash" => "454925582" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.uiau7e.uncld.dev", method: "GET", owner: #PID<0.10738.0>, params: %{}, path_info: ["sources", "11", "media", "58619", "force_download"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.uiau7e.uncld.dev", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {10, 210, 0, 2}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"accept-encoding", "gzip, br, deflate"}, {"from", "gptbot(at)openai.com"}, {"host", "pinchflat.uiau7e.uncld.dev"}, {"user-agent", "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.3; +https://openai.com/gptbot)"}, {"via", "2.0 Caddy"}, {"x-forwarded-for", "74.7.227.183"}, {"x-forwarded-host", "pinchflat.uiau7e.uncld.dev"}, {"x-forwarded-proto", "https"}, {"x-openai-host-hash", "454925582"} ], request_path: "/sources/11/media/58619/force_download", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GIcYy2Rb2b6JWMIAAf8B"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.10737.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/11/media/58619/force_download", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 41970}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "from" => "gptbot(at)openai.com", "host" => "pinchflat.uiau7e.uncld.dev", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.3; +https://openai.com/gptbot)", "via" => "2.0 Caddy", "x-forwarded-for" => "74.7.227.183", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https", "x-openai-host-hash" => "454925582" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/11/media/58619/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.10737.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/11/media/58619/force_download", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 41970}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "from" => "gptbot(at)openai.com", "host" => "pinchflat.uiau7e.uncld.dev", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.3; +https://openai.com/gptbot)", "via" => "2.0 Caddy", "x-forwarded-for" => "74.7.227.183", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https", "x-openai-host-hash" => "454925582" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.uiau7e.uncld.dev", method: "GET", owner: #PID<0.10738.0>, params: %{}, path_info: ["sources", "11", "media", "58619", "force_download"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.uiau7e.uncld.dev", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {10, 210, 0, 2}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"accept-en (truncated) 13:50:42.835 [info] {"source":"oban","duration":1550,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:51:00.195 [info] {"source":"oban","duration":763,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 13:51:12.837 [info] {"source":"oban","duration":1206,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:51:42.840 [info] {"source":"oban","duration":2334,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:51:43.418 [info] GET /sources/14/media/32649/force_download 13:51:43.419 [debug] QUERY OK source="settings" db=0.2ms queue=0.1ms idle=1041.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:51:43.420 [debug] QUERY OK source="settings" db=0.3ms queue=0.1ms idle=1042.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:51:43.420 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 13:51:43.421 [error] #PID<0.10744.0> running PinchflatWeb.Endpoint (connection #PID<0.10743.0>, stream id 1) terminated Server: pinchflat.uiau7e.uncld.dev:80 (http) Request: GET /sources/14/media/32649/force_download ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/14/media/32649/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.10743.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/14/media/32649/force_download", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 46368}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "from" => "gptbot(at)openai.com", "host" => "pinchflat.uiau7e.uncld.dev", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.3; +https://openai.com/gptbot)", "via" => "2.0 Caddy", "x-forwarded-for" => "74.7.227.183", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https", "x-openai-host-hash" => "454925582" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.uiau7e.uncld.dev", method: "GET", owner: #PID<0.10744.0>, params: %{}, path_info: ["sources", "14", "media", "32649", "force_download"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.uiau7e.uncld.dev", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {10, 210, 0, 2}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"accept-encoding", "gzip, br, deflate"}, {"from", "gptbot(at)openai.com"}, {"host", "pinchflat.uiau7e.uncld.dev"}, {"user-agent", "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.3; +https://openai.com/gptbot)"}, {"via", "2.0 Caddy"}, {"x-forwarded-for", "74.7.227.183"}, {"x-forwarded-host", "pinchflat.uiau7e.uncld.dev"}, {"x-forwarded-proto", "https"}, {"x-openai-host-hash", "454925582"} ], request_path: "/sources/14/media/32649/force_download", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GIcY2gQriM9aOskAAf9B"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.10743.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/14/media/32649/force_download", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 46368}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "from" => "gptbot(at)openai.com", "host" => "pinchflat.uiau7e.uncld.dev", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.3; +https://openai.com/gptbot)", "via" => "2.0 Caddy", "x-forwarded-for" => "74.7.227.183", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https", "x-openai-host-hash" => "454925582" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/14/media/32649/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.10743.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/14/media/32649/force_download", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 46368}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "from" => "gptbot(at)openai.com", "host" => "pinchflat.uiau7e.uncld.dev", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.3; +https://openai.com/gptbot)", "via" => "2.0 Caddy", "x-forwarded-for" => "74.7.227.183", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https", "x-openai-host-hash" => "454925582" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.uiau7e.uncld.dev", method: "GET", owner: #PID<0.10744.0>, params: %{}, path_info: ["sources", "14", "media", "32649", "force_download"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.uiau7e.uncld.dev", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {10, 210, 0, 2}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"accept-en (truncated) 13:52:00.196 [info] {"source":"oban","duration":569,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 13:52:12.844 [info] {"source":"oban","duration":2377,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:52:16.563 [info] {"args":{"id":19},"id":203012,"meta":{},"system_time":1767408736563302036,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 13:52:16.566 [debug] QUERY OK source="sources" db=1.0ms queue=0.1ms idle=1016.1ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [19] 13:52:16.567 [debug] QUERY OK source="settings" db=0.4ms queue=0.4ms idle=189.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:52:16.572 [debug] QUERY OK source="media_profiles" db=3.8ms idle=190.7ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:52:16.573 [debug] QUERY OK source="settings" db=0.4ms queue=0.1ms idle=17.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:52:16.573 [debug] Fetching recent media IDs from YouTube API for playlist: UUaYhH3F6iB3KyW3afTHk5XA 13:52:16.574 [debug] QUERY OK source="settings" db=0.2ms queue=0.1ms idle=10.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:52:16.578 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 13:52:17.139 [debug] QUERY OK source="media_items" db=1.9ms idle=571.0ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND m0."media_id" IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [19, "mUlKcxGWvrQ", "ydfuNK4wSik", "x6cNQykYdEM", "SvyVS7zvquc", "l4O2F-1BWVI", "LYXADYUSTSg", "HpL40FdPGqk", "Wre5VWHxSug", "PdUu77SAH0I", "VCflrtok9hQ", "haEa6h8Ptf0", "c_-f7G9VSPw", "7rSLcNznix4", "OLXr-B-xwY8", "X05FPJq6_Oc", "kuL-trgOvq8", "WpBEifN8BYw", "YETks_YtraY", "bwKKd4N8Q2E", "PpNfOqbt0a8", "GyifuiQ6p48", "SkoFBCBASto", "-GNid2M6IC8", "muehDmLuJSw", "nBx5yssxPDk", "Q6vzDo6it9o", "AH9Z6_PlKhA", "dZfthyLyjDk", "j9UuSMaqX9Q", "jmoVFLUvyD0", "tKm_pnNEDsc", "boVAiizeh1M", "FNtBH6k7Jmo", "MDhN5WGOJ_o", "P-UQX5L_Ff0", "kys3lRzOOEY", "VDHSC2Dl8f0", "JU0uEdyPKlE", "0sSWAzq7rjc", "HOLXNrjWeuo"] 13:52:17.142 [debug] QUERY OK source="media_items" db=1.2ms idle=573.0ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [19] 13:52:17.145 [debug] QUERY OK source="tasks" db=0.6ms queue=0.1ms idle=570.8ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [203036, 19, ~U[2026-01-03 02:52:17Z], ~U[2026-01-03 02:52:17Z]] 13:52:17.147 [info] {"args":{"id":19},"id":203012,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":582474,"event":"job:stop","queue_time":255147,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 13:52:17.565 [info] {"args":{"id":23},"id":203013,"meta":{},"system_time":1767408737565485928,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 13:52:17.566 [debug] QUERY OK source="sources" db=0.4ms idle=420.4ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [23] 13:52:17.567 [debug] QUERY OK source="settings" db=0.6ms idle=419.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:52:17.568 [debug] QUERY OK source="media_profiles" db=0.8ms idle=411.3ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:52:17.569 [debug] QUERY OK source="settings" db=0.4ms idle=10.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:52:17.569 [debug] Fetching recent media IDs from YouTube API for playlist: UUSHvlfXUGYGWmDBg-afA5Bg 13:52:17.570 [debug] QUERY OK source="settings" db=0.4ms idle=4.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:52:17.570 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 13:52:17.940 [debug] QUERY OK source="media_items" db=2.1ms queue=0.1ms idle=371.6ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND m0."media_id" IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [23, "QASZbKPkS08", "pr7MMAFzHe8", "DG0BSdc6kKg", "o7DJZCU8q34", "G5A2QGwRmS4", "PER4GK9LCTA", "GzIS1WZFKtc", "24P4MFV-HrM", "6x6df3uagb4", "vALU9LhFKhE", "KF1grNBv5hU", "SLSPmp8-tXE", "53liPfHBgYQ", "zykmoM0qjbA", "boyfPk5qdBM", "H2VYuo7yb2o", "75_mYLpHDr4", "PSnlGB9aKVI", "vFBFSi2XqrQ", "X2z1ugOwR2A", "ePV6FKD1J9U", "ipxj_tl_6XY", "6l9-ctzSbCo", "xu3DTyCW3Yk", "wpAt0QaSk7U", "NXy9Sg0KIMY", "ml5AG_Q0y6w", "h_Uq6-e06y8", "37_rLteuwG4", "QCbf0kOJ8lA"] 13:52:17.944 [debug] QUERY OK source="media_items" db=0.9ms idle=376.0ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [23] 13:52:17.948 [debug] QUERY OK source="tasks" db=0.5ms idle=377.9ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [203037, 23, ~U[2026-01-03 02:52:17Z], ~U[2026-01-03 02:52:17Z]] 13:52:17.949 [info] {"args":{"id":23},"id":203013,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":383459,"event":"job:stop","queue_time":473913,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 13:52:18.570 [info] {"args":{"id":25},"id":203014,"meta":{},"system_time":1767408738569783421,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 13:52:18.571 [debug] QUERY OK source="sources" db=0.5ms queue=0.1ms idle=621.8ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [25] 13:52:18.572 [debug] QUERY OK source="settings" db=0.4ms queue=0.1ms idle=622.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:52:18.573 [debug] QUERY OK source="media_profiles" db=0.4ms idle=615.6ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:52:18.574 [debug] QUERY OK source="settings" db=0.6ms queue=0.1ms idle=11.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:52:18.574 [debug] Fetching recent media IDs from YouTube API for playlist: UUWstkeBSSIEgw6n5qnlXXuA 13:52:18.575 [debug] QUERY OK source="settings" db=0.3ms queue=0.1ms idle=5.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:52:18.575 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 13:52:18.943 [debug] QUERY OK source="media_items" db=1.5ms idle=370.4ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND m0."media_id" IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [25, "_sYSZI--9TA", "T7P86y4vYKs", "qWpf9ysgE04", "81v7r86tRRE", "a3LYS6jzPKA", "o5UKHwwdhmA", "6CCxzLKCHYA", "VONzFNo8uW4", "jJUysp-6qBs", "3KzmAquL3e4", "5cgK_MdFz7s", "bHpsXfutTFY", "kVhFNQj86Ng", "nyd40ZDhRw4"] 13:52:18.946 [debug] QUERY OK source="media_items" db=1.0ms queue=0.1ms idle=373.1ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [25] 13:52:18.951 [debug] QUERY OK source="tasks" db=0.6ms idle=375.1ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [203038, 25, ~U[2026-01-03 02:52:18Z], ~U[2026-01-03 02:52:18Z]] 13:52:18.952 [info] {"args":{"id":25},"id":203014,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":381592,"event":"job:stop","queue_time":476676,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 13:52:19.574 [info] {"args":{"id":17},"id":203015,"meta":{},"system_time":1767408739574339517,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 13:52:19.575 [debug] QUERY OK source="sources" db=0.5ms queue=0.1ms idle=623.8ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [17] 13:52:19.576 [debug] QUERY OK source="settings" db=0.4ms queue=0.1ms idle=623.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:52:19.577 [debug] QUERY OK source="media_profiles" db=0.4ms queue=0.1ms idle=616.9ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:52:19.578 [debug] QUERY OK source="settings" db=0.6ms queue=0.1ms idle=9.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:52:19.578 [debug] Fetching recent media IDs from YouTube API for playlist: UUEIwxahdLz7bap-VDs9h35A 13:52:19.579 [debug] QUERY OK source="settings" db=0.3ms queue=0.1ms idle=4.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:52:19.579 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 13:52:19.922 [debug] QUERY OK source="media_items" db=3.3ms idle=343.4ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND m0."media_id" IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [17, "kuMUquaeE6g", "-NzfTE8RI4w", "2eiYALLYBFE", "J_vXK9uvRf4", "tRDxBwverlI", "ymlNErMdI2k", "hM1l19H0tX8", "qg01MgiVT9k", "a3l6FdpltbQ", "NtZaP8VMv0c", "ayicYezINas", "zoTuSOEOvPw", "U7NHNT3M-tw", "B_PCZiNlmPw", "5glksNTKkZI", "iDsb-pxE3fA", "7PJi9KSDVbQ", "CfhsW1kaa2Q", "pleHURTV6fU", "T47s4L1Wje4", "LLlghvxVoH0", "K4542wtX8B4", "rf-efIZI_Dg", "OXvdwc6NDqM", "nGEHUbTtpPY", "0FybegjTkgw", "3TgdCWBV0pg", "Qjd4CREfYbo", "pqnyUemUDF4", "6-FQSEVc_cs", "BvoDuNZ9gLA", "AjJfefo41M8", "dJSGJ1-9XWw", "Mcg9GcilBfU", "MQSwyrjTV2M", "o-dZKBwbsis", "matUCqoiSGk", "0_VdGzEk5-M", "PAOpkv0fpik", "VdwSMytC7y4", "tw5tQPm-B00", "vkD3-msLIHg", "INq7pAmaUuk", "mfTVxFapdLw", "kY2YeM5fNDw", "lkWRiks6luc", "yiCM_i8r4RM", "XzBMFsZT5gM", "dKN6XatdVkY", ...] 13:52:19.929 [debug] QUERY OK source="media_items" db=2.6ms idle=349.8ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [17] 13:52:19.932 [debug] QUERY OK source="tasks" db=0.3ms idle=352.8ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [203039, 17, ~U[2026-01-03 02:52:19Z], ~U[2026-01-03 02:52:19Z]] 13:52:19.933 [info] {"args":{"id":17},"id":203015,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":358498,"event":"job:stop","queue_time":437435,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 13:52:42.848 [info] {"source":"oban","duration":3523,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:52:45.314 [info] GET /sources/11/media/35227/force_download 13:52:45.315 [debug] QUERY OK source="settings" db=0.5ms idle=1937.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:52:45.316 [debug] QUERY OK source="settings" db=0.6ms queue=0.1ms idle=1938.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:52:45.316 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 13:52:45.317 [error] #PID<0.10760.0> running PinchflatWeb.Endpoint (connection #PID<0.10759.0>, stream id 1) terminated Server: pinchflat.uiau7e.uncld.dev:80 (http) Request: GET /sources/11/media/35227/force_download ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/11/media/35227/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.10759.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/11/media/35227/force_download", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 39368}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "from" => "gptbot(at)openai.com", "host" => "pinchflat.uiau7e.uncld.dev", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.3; +https://openai.com/gptbot)", "via" => "2.0 Caddy", "x-forwarded-for" => "74.7.227.183", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https", "x-openai-host-hash" => "454925582" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.uiau7e.uncld.dev", method: "GET", owner: #PID<0.10760.0>, params: %{}, path_info: ["sources", "11", "media", "35227", "force_download"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.uiau7e.uncld.dev", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {10, 210, 0, 2}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"accept-encoding", "gzip, br, deflate"}, {"from", "gptbot(at)openai.com"}, {"host", "pinchflat.uiau7e.uncld.dev"}, {"user-agent", "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.3; +https://openai.com/gptbot)"}, {"via", "2.0 Caddy"}, {"x-forwarded-for", "74.7.227.183"}, {"x-forwarded-host", "pinchflat.uiau7e.uncld.dev"}, {"x-forwarded-proto", "https"}, {"x-openai-host-hash", "454925582"} ], request_path: "/sources/11/media/35227/force_download", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GIcY6G15IEA_-OwAAgDB"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.10759.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/11/media/35227/force_download", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 39368}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "from" => "gptbot(at)openai.com", "host" => "pinchflat.uiau7e.uncld.dev", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.3; +https://openai.com/gptbot)", "via" => "2.0 Caddy", "x-forwarded-for" => "74.7.227.183", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https", "x-openai-host-hash" => "454925582" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/11/media/35227/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.10759.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/11/media/35227/force_download", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 39368}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "from" => "gptbot(at)openai.com", "host" => "pinchflat.uiau7e.uncld.dev", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.3; +https://openai.com/gptbot)", "via" => "2.0 Caddy", "x-forwarded-for" => "74.7.227.183", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https", "x-openai-host-hash" => "454925582" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.uiau7e.uncld.dev", method: "GET", owner: #PID<0.10760.0>, params: %{}, path_info: ["sources", "11", "media", "35227", "force_download"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.uiau7e.uncld.dev", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {10, 210, 0, 2}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"accept-en (truncated) 13:53:00.198 [info] {"source":"oban","duration":661,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 13:53:12.854 [info] {"source":"oban","duration":5071,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:53:42.858 [info] {"source":"oban","duration":3662,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:53:46.852 [info] {"args":{"id":7},"id":203020,"meta":{},"system_time":1767408826851820206,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 13:53:46.853 [debug] QUERY OK source="sources" db=0.5ms queue=0.1ms idle=475.3ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [7] 13:53:46.854 [debug] QUERY OK source="settings" db=0.3ms queue=0.1ms idle=476.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:53:46.855 [debug] QUERY OK source="media_profiles" db=0.4ms queue=0.1ms idle=477.2ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:53:46.856 [debug] QUERY OK source="settings" db=0.4ms queue=0.1ms idle=10.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:53:46.856 [debug] Fetching recent media IDs from YouTube API for playlist: UUwnKziETDbHJtx78nIkfYug 13:53:46.857 [debug] QUERY OK source="settings" db=0.4ms queue=0.1ms idle=4.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:53:46.857 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 13:53:47.152 [info] GET /sources/14/media/32643/force_download 13:53:47.154 [debug] QUERY OK source="settings" db=0.8ms queue=0.1ms idle=300.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:53:47.156 [debug] QUERY OK source="settings" db=0.7ms queue=0.1ms idle=301.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:53:47.156 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 13:53:47.158 [error] #PID<0.10767.0> running PinchflatWeb.Endpoint (connection #PID<0.10766.0>, stream id 1) terminated Server: pinchflat.uiau7e.uncld.dev:80 (http) Request: GET /sources/14/media/32643/force_download ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/14/media/32643/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.10766.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/14/media/32643/force_download", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 47152}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "from" => "gptbot(at)openai.com", "host" => "pinchflat.uiau7e.uncld.dev", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.3; +https://openai.com/gptbot)", "via" => "2.0 Caddy", "x-forwarded-for" => "74.7.227.183", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https", "x-openai-host-hash" => "454925582" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.uiau7e.uncld.dev", method: "GET", owner: #PID<0.10767.0>, params: %{}, path_info: ["sources", "14", "media", "32643", "force_download"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.uiau7e.uncld.dev", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {10, 210, 0, 2}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"accept-encoding", "gzip, br, deflate"}, {"from", "gptbot(at)openai.com"}, {"host", "pinchflat.uiau7e.uncld.dev"}, {"user-agent", "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.3; +https://openai.com/gptbot)"}, {"via", "2.0 Caddy"}, {"x-forwarded-for", "74.7.227.183"}, {"x-forwarded-host", "pinchflat.uiau7e.uncld.dev"}, {"x-forwarded-proto", "https"}, {"x-openai-host-hash", "454925582"} ], request_path: "/sources/14/media/32643/force_download", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GIcY9tNRKdyJGxsAAN5i"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.10766.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/14/media/32643/force_download", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 47152}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "from" => "gptbot(at)openai.com", "host" => "pinchflat.uiau7e.uncld.dev", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.3; +https://openai.com/gptbot)", "via" => "2.0 Caddy", "x-forwarded-for" => "74.7.227.183", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https", "x-openai-host-hash" => "454925582" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/14/media/32643/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.10766.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/14/media/32643/force_download", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 47152}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "from" => "gptbot(at)openai.com", "host" => "pinchflat.uiau7e.uncld.dev", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.3; +https://openai.com/gptbot)", "via" => "2.0 Caddy", "x-forwarded-for" => "74.7.227.183", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https", "x-openai-host-hash" => "454925582" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.uiau7e.uncld.dev", method: "GET", owner: #PID<0.10767.0>, params: %{}, path_info: ["sources", "14", "media", "32643", "force_download"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.uiau7e.uncld.dev", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {10, 210, 0, 2}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"accept-en (truncated) 13:53:47.200 [debug] QUERY OK source="media_items" db=2.7ms idle=341.8ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND m0."media_id" IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [7, "mC5NdpSMDks", "ccV3u3D9ONE", "cVCDjEfPzII", "n0X2rqzKTgM", "dcuCvRNqmpY", "GG1qX8jHKGo", "k9wkleHFvo0", "CWoYVlMuUNQ", "xlfeieH4z38", "eZM2Ik-FHEU", "CtcTG8-qzbA", "6Mmj7mf1qlg", "InwVO9qBjqs", "1Hp-W2bpPrw", "VtE5sTpkn7k", "8dOJypt2F70", "Evm4t4prtWo", "taLzgvbrnv0", "rgCrnyf5JEI", "PHhc-48JT3U", "vFKjpNNjNGw", "VJQlOI70ubw", "E5cfNq0DO90", "DNBGSsZatbY", "pna1NyaHTls", "CUHao-vA98g", "cPN9BJe_RQw", "rCBt4XgCX-0", "f4g6KKGMmEI", "P_I5Jsc3xRw", "fPaU2l7RktM", "0PVwt01b6fs", "0qMDM4Y4Hwo", "Ld285PDsHvs", "p1mQC71wplA", "9k5JhKK6WlA", "WPxrifmtlQI", "nVNBmK7a1y8", "QDnMYztaxfI", "gxsaWhXG1Gg", "RMtkKiyrXic", "JKlJ6OW67Bk", "Sjmb8O-fRWI", "qZhD4G7ENSY", "OTWDzMjgsEY", "Y_eCu_pW6-4", "DplgNsjOPRg", "l6hHI3AVoYM", "joAhvj7dfsc", ...] 13:53:47.206 [debug] QUERY OK source="media_items" db=4.5ms idle=346.3ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [7] 13:53:47.213 [debug] QUERY OK source="tasks" db=0.7ms idle=56.9ms INSERT INTO "tasks" ("job_id","media_item_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [203040, 8350, ~U[2026-01-03 02:53:47Z], ~U[2026-01-03 02:53:47Z]] 13:53:47.222 [info] {"args":{"id":8350},"id":203040,"meta":{},"system_time":1767408827222817068,"max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 13:53:47.223 [info] {"args":{"id":8380},"id":203041,"meta":{},"system_time":1767408827222917700,"max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 13:53:47.224 [debug] QUERY OK source="tasks" db=2.1ms idle=9.1ms INSERT INTO "tasks" ("job_id","media_item_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [203041, 8380, ~U[2026-01-03 02:53:47Z], ~U[2026-01-03 02:53:47Z]] 13:53:47.224 [debug] QUERY OK source="media_items" db=0.9ms queue=0.1ms idle=9.3ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [8350] 13:53:47.224 [debug] QUERY OK source="media_items" db=1.1ms idle=5.0ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [8380] 13:53:47.224 [info] User scripts lifecyle file either not present or is empty. Skipping. 13:53:47.224 [info] User scripts lifecyle file either not present or is empty. Skipping. 13:53:47.226 [debug] QUERY OK source="sources" db=1.3ms queue=0.2ms idle=2.2ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [7] 13:53:47.226 [debug] QUERY OK source="sources" db=1.4ms idle=1.1ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [7] 13:53:47.227 [debug] QUERY OK source="media_profiles" db=0.8ms queue=0.1ms idle=2.5ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:53:47.227 [debug] QUERY OK source="media_profiles" db=0.8ms queue=0.1ms idle=2.2ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:53:47.229 [debug] QUERY OK source="media_items" db=1.3ms idle=1.6ms SELECT 1 FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) LIMIT 1 [8380] 13:53:47.229 [debug] QUERY OK source="media_items" db=1.5ms queue=0.1ms idle=1.8ms SELECT 1 FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) LIMIT 1 [8350] 13:53:47.231 [debug] QUERY OK source="media_metadata" db=0.5ms idle=3.2ms SELECT m0."id", m0."metadata_filepath", m0."thumbnail_filepath", m0."media_item_id", m0."inserted_at", m0."updated_at", m0."media_item_id" FROM "media_metadata" AS m0 WHERE (m0."media_item_id" = ?) [8380] 13:53:47.231 [debug] QUERY OK source="media_metadata" db=0.3ms idle=3.5ms SELECT m0."id", m0."metadata_filepath", m0."thumbnail_filepath", m0."media_item_id", m0."inserted_at", m0."updated_at", m0."media_item_id" FROM "media_metadata" AS m0 WHERE (m0."media_item_id" = ?) [8350] 13:53:47.233 [debug] QUERY OK source="media_profiles" db=0.9ms queue=0.1ms idle=0.4ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:53:47.233 [debug] QUERY OK source="media_profiles" db=1.0ms queue=0.1ms idle=1.9ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:53:47.233 [debug] QUERY OK source="tasks" db=1.0ms idle=1.0ms INSERT INTO "tasks" ("job_id","media_item_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [203042, 8401, ~U[2026-01-03 02:53:47Z], ~U[2026-01-03 02:53:47Z]] 13:53:47.234 [debug] QUERY OK source="settings" db=0.4ms queue=0.1ms idle=1.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:53:47.234 [debug] QUERY OK source="settings" db=0.7ms idle=1.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:53:47.235 [debug] QUERY OK source="settings" db=0.3ms queue=0.1ms idle=1.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:53:47.235 [debug] QUERY OK source="settings" db=0.7ms idle=1.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:53:47.235 [debug] Running yt-dlp command for action: get_downloadable_status 13:53:47.237 [debug] Running yt-dlp command for action: get_downloadable_status 13:53:47.238 [debug] QUERY OK source="settings" db=0.4ms idle=3.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:53:47.238 [debug] QUERY OK source="settings" db=0.3ms idle=2.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:53:47.239 [debug] QUERY OK source="tasks" db=0.8ms idle=3.0ms INSERT INTO "tasks" ("job_id","media_item_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [203043, 8418, ~U[2026-01-03 02:53:47Z], ~U[2026-01-03 02:53:47Z]] 13:53:47.239 [debug] QUERY OK source="settings" db=0.4ms queue=0.1ms idle=1.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:53:47.240 [debug] QUERY OK source="settings" db=1.1ms queue=0.3ms idle=1.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:53:47.240 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=bhkmFO8DikY --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/cb/63/cb630db176724a1f6f7a435220fd146f3c4cbf9ca6334e941dedeb997bf31dd7.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 13:53:47.240 [debug] QUERY OK source="settings" db=0.2ms idle=1.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:53:47.241 [debug] QUERY OK source="settings" db=0.6ms idle=1.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:53:47.242 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=aCES82xfgdw --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/d2/3e/d23e6443b6be1da4a3dabab9c076537807fdf0ba37fdb81062b1f2393d0332f0.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 13:53:47.243 [debug] QUERY OK source="tasks" db=0.7ms idle=2.8ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [203044, 7, ~U[2026-01-03 02:53:47Z], ~U[2026-01-03 02:53:47Z]] 13:53:47.244 [info] {"args":{"id":7},"id":203020,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":392124,"event":"job:stop","queue_time":434698,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 13:53:52.545 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=aCES82xfgdw --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/d2/3e/d23e6443b6be1da4a3dabab9c076537807fdf0ba37fdb81062b1f2393d0332f0.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 1 with: ERROR: [youtube] aCES82xfgdw: Sign in to confirm your age. This video may be inappropriate for some users. Use --cookies-from-browser or --cookies for the authentication. See https://github.com/yt-dlp/yt-dlp/wiki/FAQ#how-do-i-pass-cookies-to-yt-dlp for how to manually pass cookies. Also see https://github.com/yt-dlp/yt-dlp/wiki/Extractors#exporting-youtube-cookies for tips on effectively exporting YouTube cookies 13:53:52.547 [debug] QUERY OK source="settings" db=0.6ms queue=0.2ms idle=676.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:53:52.549 [debug] QUERY OK source="settings" db=0.9ms queue=0.2ms idle=170.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:53:52.550 [debug] Running yt-dlp command for action: get_downloadable_status 13:53:52.552 [debug] QUERY OK source="settings" db=0.3ms idle=174.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:53:52.553 [debug] QUERY OK source="settings" db=0.3ms idle=175.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:53:52.554 [debug] QUERY OK source="settings" db=0.3ms queue=0.1ms idle=176.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:53:52.554 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=aCES82xfgdw --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/71/d5/71d570cb32c102a012e33066d74ecc9e17afd7ca7b2a2e77ed7714a457e48acc.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 13:53:52.829 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=bhkmFO8DikY --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/cb/63/cb630db176724a1f6f7a435220fd146f3c4cbf9ca6334e941dedeb997bf31dd7.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 1 with: ERROR: [youtube] bhkmFO8DikY: Sign in to confirm your age. This video may be inappropriate for some users. Use --cookies-from-browser or --cookies for the authentication. See https://github.com/yt-dlp/yt-dlp/wiki/FAQ#how-do-i-pass-cookies-to-yt-dlp for how to manually pass cookies. Also see https://github.com/yt-dlp/yt-dlp/wiki/Extractors#exporting-youtube-cookies for tips on effectively exporting YouTube cookies 13:53:52.831 [debug] QUERY OK source="settings" db=0.4ms queue=0.1ms idle=283.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:53:52.833 [debug] QUERY OK source="settings" db=0.8ms queue=0.2ms idle=282.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:53:52.834 [debug] Running yt-dlp command for action: get_downloadable_status 13:53:52.836 [debug] QUERY OK source="settings" db=0.2ms idle=283.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:53:52.837 [debug] QUERY OK source="settings" db=0.3ms queue=0.1ms idle=283.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:53:52.837 [debug] QUERY OK source="settings" db=0.4ms idle=283.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:53:52.838 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=bhkmFO8DikY --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/f7/e3/f7e363acf947c8772c09a05e0810f566154ed39d1b1ae4dd291034794afee27d.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 13:53:54.891 [info] {"args":{"id":24},"id":203021,"meta":{},"system_time":1767408834890637527,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 13:53:54.892 [debug] QUERY OK source="sources" db=0.4ms queue=0.1ms idle=514.4ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [24] 13:53:54.893 [debug] QUERY OK source="settings" db=0.3ms queue=0.1ms idle=515.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:53:54.893 [debug] QUERY OK source="media_profiles" db=0.3ms queue=0.1ms idle=516.2ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:53:54.894 [debug] QUERY OK source="settings" db=0.3ms queue=0.1ms idle=11.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:53:54.894 [debug] Fetching recent media IDs from YouTube API for playlist: UUNTjSZfAK117b2kFGNCJfdA 13:53:54.895 [debug] QUERY OK source="settings" db=0.2ms queue=0.1ms idle=4.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:53:54.896 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 13:53:55.306 [debug] QUERY OK source="media_items" db=2.8ms idle=411.3ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND m0."media_id" IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [24, "2J48c2sukbo", "zq9gpqgWFv8", "EWdphas_OP4", "-U2sQ3e3R-0", "XdytKwHuG_8", "t-hori2Io14", "Xbemvi42Ngs", "91m4MQw_sZI", "GfUIbPqAMQs", "4VpVt3zdvL8", "q6Kd5C7O-F8", "EV6DSqTOXM0", "mMvfBUNNKIY", "C215grXAMCk", "_x6TE7hbE1k", "vycMxLco0a0", "lJWhisaNv8E", "4Blxc8mVzQs", "ztqcWc5aaks", "0Dvn039qD8I", "Vx69evZOEAE", "4dzZ44-xVds", "Rews5WNxiNk", "f-BFFWzh9uE", "RfJSMWHO0tY", "gMeUOURvDP8", "LEiL1np9sSM", "F-QeDtQ8Gy4", "9FSIF281OAo", "Shav52BfzWk", "dsCfQ3y5tHQ", "0rpt5sMb7cw", "Fe7Y152ak3Y", "HEuablkqrCg", "BRUTYHBJ_Z4", "gpaV4bgEG-g", "ppjFdEbIS4g", "lEhEMRA17bg", "tpIXmmV4ib4", "LBYQ_NLVKCw", "JsdM3k3QiPc", "TNmSVjGyZx0", "OMVYZziNjhc", "uyfyFRvng3c", "YFBg5NNEW4g", "IkZe4pXDv0k", "ZT0in30U-ug", "kqDqSLOuxmM", "ZgLsNSWN46o", ...] 13:53:55.310 [debug] QUERY OK source="media_items" db=1.9ms idle=415.7ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [24] 13:53:55.313 [debug] QUERY OK source="tasks" db=0.5ms idle=417.3ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [203045, 24, ~U[2026-01-03 02:53:55Z], ~U[2026-01-03 02:53:55Z]] 13:53:55.314 [info] {"args":{"id":24},"id":203021,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":423030,"event":"job:stop","queue_time":459650,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 13:53:57.762 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=aCES82xfgdw --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/71/d5/71d570cb32c102a012e33066d74ecc9e17afd7ca7b2a2e77ed7714a457e48acc.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 1 with: ERROR: [youtube] aCES82xfgdw: Sign in to confirm your age. This video may be inappropriate for some users. Use --cookies-from-browser or --cookies for the authentication. See https://github.com/yt-dlp/yt-dlp/wiki/FAQ#how-do-i-pass-cookies-to-yt-dlp for how to manually pass cookies. Also see https://github.com/yt-dlp/yt-dlp/wiki/Extractors#exporting-youtube-cookies for tips on effectively exporting YouTube cookies 13:53:57.762 [error] yt-dlp download error for media item #8350: "ERROR: [youtube] aCES82xfgdw: Sign in to confirm your age. This video may be inappropriate for some users. Use --cookies-from-browser or --cookies for the authentication. See https://github.com/yt-dlp/yt-dlp/wiki/FAQ#how-do-i-pass-cookies-to-yt-dlp for how to manually pass cookies. Also see https://github.com/yt-dlp/yt-dlp/wiki/Extractors#exporting-youtube-cookies for tips on effectively exporting YouTube cookies\n" 13:53:57.763 [error] yt-dlp download will not be retried: "ERROR: [youtube] aCES82xfgdw: Sign in to confirm your age. This video may be inappropriate for some users. Use --cookies-from-browser or --cookies for the authentication. See https://github.com/yt-dlp/yt-dlp/wiki/FAQ#how-do-i-pass-cookies-to-yt-dlp for how to manually pass cookies. Also see https://github.com/yt-dlp/yt-dlp/wiki/Extractors#exporting-youtube-cookies for tips on effectively exporting YouTube cookies\n" 13:53:57.764 [info] {"args":{"id":8350},"id":203040,"meta":{},"state":"success","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":10540622,"event":"job:stop","queue_time":218714,"attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 13:53:57.772 [info] {"args":{"id":8401},"id":203042,"meta":{},"system_time":1767408837772577017,"max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 13:53:57.773 [debug] QUERY OK source="media_items" db=0.3ms queue=0.1ms idle=1396.1ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [8401] 13:53:57.774 [info] User scripts lifecyle file either not present or is empty. Skipping. 13:53:57.775 [debug] QUERY OK source="sources" db=0.4ms queue=0.2ms idle=1397.4ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [7] 13:53:57.776 [debug] QUERY OK source="media_profiles" db=0.3ms queue=0.1ms idle=886.4ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:53:57.777 [debug] QUERY OK source="media_items" db=0.4ms queue=0.1ms idle=12.5ms SELECT 1 FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) LIMIT 1 [8401] 13:53:57.779 [debug] QUERY OK source="media_metadata" db=0.2ms idle=7.0ms SELECT m0."id", m0."metadata_filepath", m0."thumbnail_filepath", m0."media_item_id", m0."inserted_at", m0."updated_at", m0."media_item_id" FROM "media_metadata" AS m0 WHERE (m0."media_item_id" = ?) [8401] 13:53:57.780 [debug] QUERY OK source="media_profiles" db=0.2ms queue=0.1ms idle=6.2ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:53:57.781 [debug] QUERY OK source="settings" db=0.3ms idle=6.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:53:57.782 [debug] QUERY OK source="settings" db=0.2ms queue=0.1ms idle=5.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:53:57.783 [debug] Running yt-dlp command for action: get_downloadable_status 13:53:57.784 [debug] QUERY OK source="settings" db=0.1ms idle=6.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:53:57.784 [debug] QUERY OK source="settings" db=0.2ms queue=0.1ms idle=4.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:53:57.785 [debug] QUERY OK source="settings" db=0.1ms idle=4.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:53:57.785 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=ZWSj0M132e8 --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/ce/d9/ced9dea165a2e41635c9b16c1a8672815cb2e95183391bb1d5a1d66d998f4772.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 13:53:58.309 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=bhkmFO8DikY --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/f7/e3/f7e363acf947c8772c09a05e0810f566154ed39d1b1ae4dd291034794afee27d.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 1 with: ERROR: [youtube] bhkmFO8DikY: Sign in to confirm your age. This video may be inappropriate for some users. Use --cookies-from-browser or --cookies for the authentication. See https://github.com/yt-dlp/yt-dlp/wiki/FAQ#how-do-i-pass-cookies-to-yt-dlp for how to manually pass cookies. Also see https://github.com/yt-dlp/yt-dlp/wiki/Extractors#exporting-youtube-cookies for tips on effectively exporting YouTube cookies 13:53:58.309 [error] yt-dlp download error for media item #8380: "ERROR: [youtube] bhkmFO8DikY: Sign in to confirm your age. This video may be inappropriate for some users. Use --cookies-from-browser or --cookies for the authentication. See https://github.com/yt-dlp/yt-dlp/wiki/FAQ#how-do-i-pass-cookies-to-yt-dlp for how to manually pass cookies. Also see https://github.com/yt-dlp/yt-dlp/wiki/Extractors#exporting-youtube-cookies for tips on effectively exporting YouTube cookies\n" 13:53:58.310 [error] yt-dlp download will not be retried: "ERROR: [youtube] bhkmFO8DikY: Sign in to confirm your age. This video may be inappropriate for some users. Use --cookies-from-browser or --cookies for the authentication. See https://github.com/yt-dlp/yt-dlp/wiki/FAQ#how-do-i-pass-cookies-to-yt-dlp for how to manually pass cookies. Also see https://github.com/yt-dlp/yt-dlp/wiki/Extractors#exporting-youtube-cookies for tips on effectively exporting YouTube cookies\n" 13:53:58.311 [info] {"args":{"id":8380},"id":203041,"meta":{},"state":"success","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":11087231,"event":"job:stop","queue_time":218714,"attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 13:53:58.321 [info] {"args":{"id":8418},"id":203043,"meta":{},"system_time":1767408838321433905,"max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 13:53:58.323 [debug] QUERY OK source="media_items" db=1.0ms queue=0.2ms idle=537.3ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [8418] 13:53:58.324 [info] User scripts lifecyle file either not present or is empty. Skipping. 13:53:58.325 [debug] QUERY OK source="sources" db=0.4ms queue=0.3ms idle=539.5ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [7] 13:53:58.326 [debug] QUERY OK source="media_profiles" db=0.3ms queue=0.1ms idle=431.9ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:53:58.327 [debug] QUERY OK source="media_items" db=0.4ms queue=0.1ms idle=15.8ms SELECT 1 FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) LIMIT 1 [8418] 13:53:58.330 [debug] QUERY OK source="media_metadata" db=0.3ms idle=8.8ms SELECT m0."id", m0."metadata_filepath", m0."thumbnail_filepath", m0."media_item_id", m0."inserted_at", m0."updated_at", m0."media_item_id" FROM "media_metadata" AS m0 WHERE (m0."media_item_id" = ?) [8418] 13:53:58.331 [debug] QUERY OK source="media_profiles" db=0.6ms queue=0.1ms idle=7.3ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:53:58.333 [debug] QUERY OK source="settings" db=0.3ms idle=7.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:53:58.333 [debug] QUERY OK source="settings" db=0.3ms queue=0.1ms idle=6.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:53:58.334 [debug] Running yt-dlp command for action: get_downloadable_status 13:53:58.336 [debug] QUERY OK source="settings" db=0.3ms idle=8.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:53:58.337 [debug] QUERY OK source="settings" db=0.4ms queue=0.1ms idle=6.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:53:58.338 [debug] QUERY OK source="settings" db=0.3ms idle=6.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:53:58.339 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=v6jHhzj08yQ --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/87/2d/872da6ef677bc9cf6b5e18e8e6e27c183a796a74cb5157eae35b3d3cf0c616d3.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 13:54:00.200 [info] {"source":"oban","duration":637,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 13:54:02.855 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=ZWSj0M132e8 --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/ce/d9/ced9dea165a2e41635c9b16c1a8672815cb2e95183391bb1d5a1d66d998f4772.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 1 with: ERROR: [youtube] ZWSj0M132e8: Sign in to confirm your age. This video may be inappropriate for some users. Use --cookies-from-browser or --cookies for the authentication. See https://github.com/yt-dlp/yt-dlp/wiki/FAQ#how-do-i-pass-cookies-to-yt-dlp for how to manually pass cookies. Also see https://github.com/yt-dlp/yt-dlp/wiki/Extractors#exporting-youtube-cookies for tips on effectively exporting YouTube cookies 13:54:02.857 [debug] QUERY OK source="settings" db=0.6ms queue=0.1ms idle=1479.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:54:02.857 [debug] QUERY OK source="settings" db=0.3ms idle=1480.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:54:02.858 [debug] Running yt-dlp command for action: get_downloadable_status 13:54:02.860 [debug] QUERY OK source="settings" db=0.3ms idle=1482.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:54:02.860 [debug] QUERY OK source="settings" db=0.2ms idle=1483.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:54:02.861 [debug] QUERY OK source="settings" db=0.2ms idle=951.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:54:02.861 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=ZWSj0M132e8 --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/b5/9c/b59c05ffcf96922ae2fb95d69914bd2fc3545f446d0c43c3193e134f7d64c9ed.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 13:54:03.609 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=v6jHhzj08yQ --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/87/2d/872da6ef677bc9cf6b5e18e8e6e27c183a796a74cb5157eae35b3d3cf0c616d3.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 1 with: ERROR: [youtube] v6jHhzj08yQ: Sign in to confirm your age. This video may be inappropriate for some users. Use --cookies-from-browser or --cookies for the authentication. See https://github.com/yt-dlp/yt-dlp/wiki/FAQ#how-do-i-pass-cookies-to-yt-dlp for how to manually pass cookies. Also see https://github.com/yt-dlp/yt-dlp/wiki/Extractors#exporting-youtube-cookies for tips on effectively exporting YouTube cookies 13:54:03.610 [debug] QUERY OK source="settings" db=0.6ms idle=752.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:54:03.611 [debug] QUERY OK source="settings" db=0.5ms idle=750.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:54:03.612 [debug] Running yt-dlp command for action: get_downloadable_status 13:54:03.614 [debug] QUERY OK source="settings" db=0.4ms idle=753.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:54:03.615 [debug] QUERY OK source="settings" db=0.4ms idle=753.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:54:03.616 [debug] QUERY OK source="settings" db=0.6ms idle=703.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:54:03.616 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=v6jHhzj08yQ --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/dc/84/dc8435a5819f524120a83c07bea0915c3c84e8035860d88a1f6d0196779d6994.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 13:54:08.245 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=ZWSj0M132e8 --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/b5/9c/b59c05ffcf96922ae2fb95d69914bd2fc3545f446d0c43c3193e134f7d64c9ed.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 1 with: ERROR: [youtube] ZWSj0M132e8: Sign in to confirm your age. This video may be inappropriate for some users. Use --cookies-from-browser or --cookies for the authentication. See https://github.com/yt-dlp/yt-dlp/wiki/FAQ#how-do-i-pass-cookies-to-yt-dlp for how to manually pass cookies. Also see https://github.com/yt-dlp/yt-dlp/wiki/Extractors#exporting-youtube-cookies for tips on effectively exporting YouTube cookies 13:54:08.245 [error] yt-dlp download error for media item #8401: "ERROR: [youtube] ZWSj0M132e8: Sign in to confirm your age. This video may be inappropriate for some users. Use --cookies-from-browser or --cookies for the authentication. See https://github.com/yt-dlp/yt-dlp/wiki/FAQ#how-do-i-pass-cookies-to-yt-dlp for how to manually pass cookies. Also see https://github.com/yt-dlp/yt-dlp/wiki/Extractors#exporting-youtube-cookies for tips on effectively exporting YouTube cookies\n" 13:54:08.246 [error] yt-dlp download will not be retried: "ERROR: [youtube] ZWSj0M132e8: Sign in to confirm your age. This video may be inappropriate for some users. Use --cookies-from-browser or --cookies for the authentication. See https://github.com/yt-dlp/yt-dlp/wiki/FAQ#how-do-i-pass-cookies-to-yt-dlp for how to manually pass cookies. Also see https://github.com/yt-dlp/yt-dlp/wiki/Extractors#exporting-youtube-cookies for tips on effectively exporting YouTube cookies\n" 13:54:08.247 [info] {"args":{"id":8401},"id":203042,"meta":{},"state":"success","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":10473507,"event":"job:stop","queue_time":10770859,"attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 13:54:08.927 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=v6jHhzj08yQ --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/dc/84/dc8435a5819f524120a83c07bea0915c3c84e8035860d88a1f6d0196779d6994.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 1 with: ERROR: [youtube] v6jHhzj08yQ: Sign in to confirm your age. This video may be inappropriate for some users. Use --cookies-from-browser or --cookies for the authentication. See https://github.com/yt-dlp/yt-dlp/wiki/FAQ#how-do-i-pass-cookies-to-yt-dlp for how to manually pass cookies. Also see https://github.com/yt-dlp/yt-dlp/wiki/Extractors#exporting-youtube-cookies for tips on effectively exporting YouTube cookies 13:54:08.927 [error] yt-dlp download error for media item #8418: "ERROR: [youtube] v6jHhzj08yQ: Sign in to confirm your age. This video may be inappropriate for some users. Use --cookies-from-browser or --cookies for the authentication. See https://github.com/yt-dlp/yt-dlp/wiki/FAQ#how-do-i-pass-cookies-to-yt-dlp for how to manually pass cookies. Also see https://github.com/yt-dlp/yt-dlp/wiki/Extractors#exporting-youtube-cookies for tips on effectively exporting YouTube cookies\n" 13:54:08.927 [error] yt-dlp download will not be retried: "ERROR: [youtube] v6jHhzj08yQ: Sign in to confirm your age. This video may be inappropriate for some users. Use --cookies-from-browser or --cookies for the authentication. See https://github.com/yt-dlp/yt-dlp/wiki/FAQ#how-do-i-pass-cookies-to-yt-dlp for how to manually pass cookies. Also see https://github.com/yt-dlp/yt-dlp/wiki/Extractors#exporting-youtube-cookies for tips on effectively exporting YouTube cookies\n" 13:54:08.928 [info] {"args":{"id":8418},"id":203043,"meta":{},"state":"success","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":10606555,"event":"job:stop","queue_time":11317910,"attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 13:54:12.860 [info] {"source":"oban","duration":1941,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:54:37.007 [info] {"args":{"id":3},"id":203022,"meta":{},"system_time":1767408877007513750,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 13:54:37.009 [debug] QUERY OK source="sources" db=1.0ms idle=631.2ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [3] 13:54:37.010 [debug] QUERY OK source="settings" db=0.5ms idle=632.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:54:37.010 [debug] QUERY OK source="media_profiles" db=0.6ms idle=633.3ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:54:37.011 [debug] QUERY OK source="settings" db=0.4ms queue=0.1ms idle=10.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:54:37.011 [debug] Fetching recent media IDs from YouTube API for playlist: UUISrVZmDM4x-Rq9mmNUw7Zw 13:54:37.012 [debug] QUERY OK source="settings" db=0.3ms idle=4.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:54:37.012 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 13:54:37.436 [debug] QUERY OK source="media_items" db=3.7ms idle=423.0ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND m0."media_id" IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [3, "CtF5dLHITYA", "SGJkxRdkRGg", "OUCt85aJaAA", "9gARPYZOka4", "-uH-Gi5tjEw", "qwUBBQKYX94", "s8VLDSQJ8nA", "EvPfr0lKkh4", "msXzAxF49gA", "hQCWaSvjkU0", "RcmjVsy3a-g", "xtuNc9vYJG4", "fj2tcg8OzsM", "2FZ4IfPACDM", "2Q9DzW20YJ8", "IVsWFGOE_mw", "vPxpMcv2Z4Y", "Zverj_ldlhY", "pQK8xasPd9Q", "_Yo7nh8u9pk", "4HzltsOvc0A", "a8UBLMm71JY", "3vqbr7-6Twk", "Df0iVjAKJZw", "n-X-AJpHUyI", "4CV7jI0e0Hw", "nqPoocCKci8", "5IIOdWnJGxg", "jkPL8BaM4ko", "CzeQtnRmUZ0", "9u-0d2IVZ3I", "igtvNmqsKM0", "47XDpW4nOzk", "8xvd7xSLQOo", "PnQPZMN0kIY", "feDph2WgRfI", "Z5FZ2XfX4Uc", "e0DxPopyrqM", "YvaK-Tjp2ck", "6_CctUPWX4I", "_DzHKw8yK58", "VnAkeiehyCg", "EFW1iCguDV8", "CEj7B1VzUwU", "3cy5fWUssjQ", "ZnjoTYmqLhs", "5IxtizzvaWw", "ZnBsMRl-EL0", "ET-M3T8E0PU", ...] 13:54:37.444 [debug] QUERY OK source="media_items" db=6.5ms idle=427.2ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [3] 13:54:37.447 [debug] QUERY OK source="tasks" db=0.7ms idle=434.7ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [203046, 3, ~U[2026-01-03 02:54:37Z], ~U[2026-01-03 02:54:37Z]] 13:54:37.449 [info] {"args":{"id":3},"id":203022,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":440548,"event":"job:stop","queue_time":398063,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 13:54:42.865 [info] {"source":"oban","duration":4117,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:54:49.039 [info] {"args":{"id":22},"id":203023,"meta":{},"system_time":1767408889039148303,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 13:54:49.039 [debug] QUERY OK source="sources" db=0.3ms idle=1662.5ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [22] 13:54:49.040 [debug] QUERY OK source="settings" db=0.2ms idle=1011.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:54:49.040 [debug] QUERY OK source="media_profiles" db=0.2ms idle=663.6ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:54:49.041 [debug] QUERY OK source="settings" db=0.4ms idle=9.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:54:49.042 [debug] Fetching recent media IDs from YouTube API for playlist: UUP1RHyOhO98Yn2rMbDBirxA 13:54:49.042 [debug] QUERY OK source="settings" db=0.2ms queue=0.1ms idle=3.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:54:49.042 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 13:54:49.347 [debug] QUERY OK source="media_items" db=2.5ms idle=304.6ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND m0."media_id" IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [22, "N5RzDzO54gQ", "5glegyagphQ", "VtiV_RfFqNM", "qNYyH7bMcbI", "MPdiQsg_zQ8", "4-VOc2Aich8", "gMrBK9rp6As", "p0lqYk8_uMI", "aKpQHxUiwxc", "KsuhL0zVo3I", "pCJcoGDsbxc", "_5AR-GKeqlk", "VcJG7rIOjb0", "vRzAE_0VnXQ", "uj_bcWLWMtw", "xRyiudwo_jM", "pTMRT4CRUoM", "W8_LEBSOsPg", "YZuP7d99kCw"] 13:54:49.349 [debug] QUERY OK source="settings" db=0.6ms idle=307.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:54:49.349 [debug] QUERY OK source="settings" db=0.4ms idle=308.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:54:49.349 [debug] Running yt-dlp command for action: get_media_attributes 13:54:49.352 [debug] QUERY OK source="settings" db=0.4ms idle=310.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:54:49.352 [debug] QUERY OK source="settings" db=0.3ms idle=309.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:54:49.353 [debug] QUERY OK source="settings" db=0.1ms idle=5.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:54:49.353 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=gMrBK9rp6As --simulate --skip-download --output /downloads/White Raven/Season %(upload_date>%Y)S/s%(upload_date>%Y)Se%(upload_date>%m%d)S00 - %(title)S.%(ext)S --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --print-to-file %(.{id,title,live_status,original_url,description,aspect_ratio,duration,upload_date,timestamp,playlist_index,filename})j /tmp/pinchflat/data/55/bc/55bc371137c0758b95baa666c4f07e134e6fd81e48adfed2801cac46c7855600.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 13:54:51.051 [info] {"args":{"id":1},"id":203024,"meta":{},"system_time":1767408891051607950,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 13:54:51.052 [debug] QUERY OK source="sources" db=0.3ms idle=675.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 13:54:51.052 [debug] QUERY OK source="settings" db=0.2ms idle=675.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:54:51.053 [debug] QUERY OK source="media_profiles" db=0.3ms idle=676.0ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:54:51.053 [debug] QUERY OK source="settings" db=0.2ms idle=17.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:54:51.053 [debug] Fetching recent media IDs from YouTube API for playlist: UU54SLBnD5k5U3Q6N__UjbAw 13:54:51.054 [debug] QUERY OK source="settings" db=0.1ms idle=2.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:54:51.054 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 13:54:51.178 [info] GET /sources/17/media/40995 13:54:51.178 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "40995", "source_id" => "17"} Pipelines: [:browser] 13:54:51.180 [debug] QUERY OK source="media_items" db=1.1ms idle=126.6ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [40995] 13:54:51.181 [debug] QUERY OK source="tasks" db=0.5ms idle=127.8ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [40995] 13:54:51.181 [debug] QUERY OK source="sources" db=0.9ms queue=0.1ms idle=127.3ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [17] 13:54:51.183 [debug] QUERY OK source="settings" db=0.5ms idle=128.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:54:51.183 [debug] QUERY OK source="settings" db=0.5ms idle=128.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:54:51.185 [debug] QUERY OK source="settings" db=0.6ms idle=4.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:54:51.186 [debug] QUERY OK source="media_profiles" db=0.6ms idle=4.7ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:54:51.188 [info] Sent 200 in 10ms 13:54:51.640 [debug] QUERY OK source="media_items" db=5.9ms idle=451.8ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND m0."media_id" IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [1, "UYCKIroDVBY", "ynOiaE9f6NY", "At_WjGosTNM", "_s7ZzdPoVZE", "ulhKFEKXIEI", "YpQ2jupcrHk", "PetMnG6cCDw", "VdxlXCnA1DM", "uj2s7HZQigU", "rZ7Y_gPAHig", "LTmK8Ab6IFE", "sZKNVGI8xt0", "_PUZIf6VQto", "J2-1ZErtS7A", "OEyptSEM5Tw", "HLeY2_hJvRk", "DkZ5uXcDxjc", "zPWe_aBuNfM", "PZN18led4ok", "66F09ebI9gw", "Pfok4B_xyaI", "e5HEGCCadBU", "hYFsHfPquPg", "nKsnfEB29ek", "OpDh_O473Ms", "ZTtZ12XtQpg", "TphXloX3PEI", "4Qhp4VPP2Wo", "J5l7jvbp3u8", "uL_YQMkkbUg", "SAZ17l0EwxI", "fTa_T2pVwuk", "6HpTVfX0SvI", "XlIWsRyXL8U", "nM1GQNJU6LQ", "WVN1LNy1zgo", "0Fxf6_q7qHc", "dL0KPsy-Dww", "G43wJ7YyWzM", "yVy89TnL9Zg", "BR1VRJDu-gc", "-2HeoqiMC6s", "7WXyx51z5G8", "jCk-9S8PQyc", "vGEIHv1XelY", "rOI7HYGGHpo", "gNeGHhU6UaI", "gUlkwSHOT7Q", "tpf7TxliCxA", ...] 13:54:51.649 [debug] QUERY OK source="media_items" db=6.7ms idle=459.4ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [1] 13:54:51.656 [debug] QUERY OK source="tasks" db=0.9ms idle=468.3ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [203047, 1, ~U[2026-01-03 02:54:51Z], ~U[2026-01-03 02:54:51Z]] 13:54:51.657 [info] {"args":{"id":1},"id":203024,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":604544,"event":"job:stop","queue_time":482807,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 13:54:53.872 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=gMrBK9rp6As --simulate --skip-download --output /downloads/White Raven/Season %(upload_date>%Y)S/s%(upload_date>%Y)Se%(upload_date>%m%d)S00 - %(title)S.%(ext)S --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --print-to-file %(.{id,title,live_status,original_url,description,aspect_ratio,duration,upload_date,timestamp,playlist_index,filename})j /tmp/pinchflat/data/55/bc/55bc371137c0758b95baa666c4f07e134e6fd81e48adfed2801cac46c7855600.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 1 with: ERROR: [youtube] gMrBK9rp6As: Offline. 13:54:53.872 [error] Error creating media item 'gMrBK9rp6As' from URL: {:error, "ERROR: [youtube] gMrBK9rp6As: Offline.\n", 1} 13:54:53.874 [debug] QUERY OK source="media_items" db=0.9ms queue=0.2ms idle=832.7ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [22] 13:54:53.878 [debug] QUERY OK source="tasks" db=0.3ms idle=500.9ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [203048, 22, ~U[2026-01-03 02:54:53Z], ~U[2026-01-03 02:54:53Z]] 13:54:53.879 [info] {"args":{"id":22},"id":203023,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":4839655,"event":"job:stop","queue_time":802424,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 13:55:00.202 [info] {"source":"oban","duration":304,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 13:55:12.087 [info] {"args":{"id":2},"id":203025,"meta":{},"system_time":1767408912087321790,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 13:55:12.089 [debug] QUERY OK source="sources" db=1.2ms queue=0.1ms idle=710.8ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [2] 13:55:12.090 [debug] QUERY OK source="settings" db=0.8ms queue=0.1ms idle=712.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:55:12.091 [debug] QUERY OK source="media_profiles" db=0.8ms queue=0.1ms idle=713.9ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:55:12.093 [debug] QUERY OK source="settings" db=0.6ms queue=0.1ms idle=11.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:55:12.093 [debug] Fetching recent media IDs from YouTube API for playlist: UUeE3lj6pLX_gCd0Yvns517Q 13:55:12.094 [debug] QUERY OK source="settings" db=0.2ms queue=0.1ms idle=6.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:55:12.094 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 13:55:12.595 [debug] QUERY OK source="media_items" db=3.0ms idle=502.4ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND m0."media_id" IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [2, "0k6I__61QDc", "tAnxIOSrasI", "qGmURDZnDhc", "vBsPoGzQPxA", "TiJoEoREmdE", "C-CkKUyzQhA", "K1UWf6n1FmY", "9VKS1P-aXSc", "kt_SNpPa2w4", "oaXa30IfZMc", "pUBcfLBwPXw", "WkG24B0xw1E", "fBQxlA3KI5U", "HbeqOllBS9o", "li1fOq_qqHM", "rsqGEZeczYw", "d7HFMZOp0S4", "oipxUVJUZrc", "cTxE_oPyD9Q", "yJlKrUX8Bvk", "pYtoIdfLeHA", "qPMGKmyQ1AA", "7W651YDFjhc", "EfUXdMBXauI", "804ky1qeBuE", "DRMng-9g9Ng", "Nzp4LPVF_7M", "1psbOjlzkyA", "IwMM9c9Q0Pw", "xhbzG8V0eSA", "-CSyf5_q-XQ", "C__g4XPdYRY", "7-FRyPsqWG0", "0-fliBPsvZI", "xLZYbjMl3hY", "qs36351JQys", "-aty2xx6kTI", "Ty7NA3HvUsk", "w6xdmHLxzSM", "-5YmR5lvMlQ", "fFbRmFdCoYc", "XkPAB-oXAoU", "rTecGGMrRKc", "tHjU0F1najQ", "Z6otzigVvWM", "9m36Ncgctbg", "B1KUJbbpoK0", "rqGLjKlA_tM", "PZDZuoa3kJE", ...] 13:55:12.606 [debug] QUERY OK source="media_items" db=6.9ms queue=0.1ms idle=508.2ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [2] 13:55:12.609 [debug] QUERY OK source="tasks" db=0.3ms queue=0.1ms idle=515.2ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [203049, 2, ~U[2026-01-03 02:55:12Z], ~U[2026-01-03 02:55:12Z]] 13:55:12.610 [info] {"args":{"id":2},"id":203025,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":522721,"event":"job:stop","queue_time":431139,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 13:55:12.869 [info] {"source":"oban","duration":2768,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:55:42.872 [info] {"source":"oban","duration":2616,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:55:57.080 [info] GET /sources/11/media/58590 13:55:57.080 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "58590", "source_id" => "11"} Pipelines: [:browser] 13:55:57.082 [debug] QUERY OK source="media_items" db=1.0ms queue=0.1ms idle=840.2ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [58590] 13:55:57.084 [debug] QUERY OK source="tasks" db=0.9ms queue=0.1ms idle=706.0ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [58590] 13:55:57.084 [debug] QUERY OK source="sources" db=1.0ms idle=706.2ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [11] 13:55:57.085 [debug] QUERY OK source="oban_jobs" db=0.6ms idle=707.7ms SELECT o0."id", o0."state", o0."queue", o0."worker", o0."args", o0."meta", o0."tags", o0."errors", o0."attempt", o0."attempted_by", o0."max_attempts", o0."priority", o0."attempted_at", o0."cancelled_at", o0."completed_at", o0."discarded_at", o0."inserted_at", o0."scheduled_at", o0."id" FROM "oban_jobs" AS o0 WHERE (o0."id" = ?) [201981] 13:55:57.086 [debug] QUERY OK source="settings" db=0.6ms queue=0.1ms idle=708.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:55:57.087 [debug] QUERY OK source="settings" db=0.4ms idle=4.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:55:57.088 [debug] QUERY OK source="settings" db=0.2ms idle=4.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:55:57.090 [debug] QUERY OK source="media_profiles" db=0.2ms idle=5.9ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:55:57.116 [info] Sent 200 in 36ms 13:56:00.203 [info] {"source":"oban","duration":389,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 13:56:08.273 [info] {"args":{"id":26},"id":203026,"meta":{},"system_time":1767408968273114875,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 13:56:08.274 [debug] QUERY OK source="sources" db=0.5ms idle=1896.5ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [26] 13:56:08.275 [debug] QUERY OK source="settings" db=0.6ms idle=1011.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:56:08.276 [debug] QUERY OK source="media_profiles" db=0.6ms idle=898.3ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:56:08.276 [debug] QUERY OK source="settings" db=0.5ms idle=10.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:56:08.276 [debug] Fetching recent media IDs from YouTube API for playlist: UU6NY7eg1FxCfAVX58yL0cJw 13:56:08.277 [debug] QUERY OK source="settings" db=0.3ms idle=4.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:56:08.277 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 13:56:08.731 [debug] QUERY OK source="media_items" db=4.2ms idle=452.2ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND m0."media_id" IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [26, "o2tiLxanOd0", "3Hkalon06bY", "acwCbVzHnRM", "m3Cddar422Y", "QItYx18RK4M", "iFrwlymvtTM", "CBKzBKWhNmE", "twi0ZP1ZWew", "MChkfGtdrgI", "usOf_0SOPl8", "7CamgxCV_lg", "CYW3qAtbiSg", "hkLPA0MEUFk", "Z9APq63an58", "MA2a2BtDQtE", "a23hasz0yk8", "o4tK4PhiK_c", "2-lUv1_A_KU", "W6GGXQ4xVdg", "TOIuoWmEqxo", "JRXSDo6asDk", "iAodr4mipf0", "12wArTNB9dk", "CFZ0TtEbofU", "RwW6yAVtf6Q", "9RshF2jpgLo", "MV8U7XQUpnY", "G0o-l5G0M4s", "FVOkr5w0O0I", "1IFJive9Bvc", "kuc2kAgYD8M", "jHOE86EMHvA", "CjuPAweX08c", "LH0RNHxukJs", "o6OxlF4vAuw", "Qxfr7h-PzdA", "xU_1w6OSnac", "-6G1TNBxp08", "o-ripoq_oXU", "Uevcwu2GLMs", "BAoXgNQ_wRI", "p4NWPk9B20I", "XKxqsR_4w_I", "BNtAWc-vLX4", "ktw-dS-26Gk", "Idbcu-oVtDs", "JCxqgAhaJj4", "A0vzWxUO5TA", "6M0wfDl0LEI", ...] 13:56:08.744 [debug] QUERY OK source="media_items" db=8.8ms idle=460.1ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [26] 13:56:08.749 [debug] QUERY OK source="tasks" db=1.0ms idle=471.0ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [203050, 26, ~U[2026-01-03 02:56:08Z], ~U[2026-01-03 02:56:08Z]] 13:56:08.750 [info] {"args":{"id":26},"id":203026,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":476707,"event":"job:stop","queue_time":296434,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 13:56:12.875 [info] {"source":"oban","duration":2645,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:56:42.395 [info] {"args":{"id":6},"id":203027,"meta":{},"system_time":1767409002395370096,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 13:56:42.397 [debug] QUERY OK source="sources" db=1.1ms idle=18.9ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [6] 13:56:42.398 [debug] QUERY OK source="settings" db=0.8ms queue=0.1ms idle=20.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:56:42.399 [debug] QUERY OK source="media_profiles" db=0.8ms idle=21.5ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:56:42.400 [debug] QUERY OK source="settings" db=0.4ms idle=11.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:56:42.400 [debug] Fetching recent media IDs from YouTube API for playlist: UUg0m_Ah8P_MQbnn77-vYnYw 13:56:42.400 [debug] QUERY OK source="settings" db=0.3ms idle=5.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:56:42.401 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 13:56:42.879 [info] {"source":"oban","duration":3766,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:56:42.919 [debug] QUERY OK source="media_items" db=5.2ms idle=515.4ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND m0."media_id" IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [6, "9i6Qm3LV89c", "2PC3HH4izX4", "dJLpdoPNdZ8", "lqRHAbkn9bo", "nlYgNjtr904", "uHKLZ8LcCJA", "V3LW3EWUxqE", "XaTvV6zJEXk", "AjnHxtnxMhk", "vuJTLm11QmQ", "vUzRuvCi6lw", "NlxSd2y_gfI", "ivcFXtMGdE8", "m17ugzx_Ab4", "o5QiLKbHeMI", "moqdU9sMrRk", "Yi55tGTEMqQ", "rHliVvnQ5Pg", "nCZSTFM-v9k", "uasm2RENDH4", "musiLNtEyRY", "uSvqlME0IsI", "Yo0hmtg8LNc", "HOFD3h9Up9w", "uibJMXaSB7c", "NGq1EoY_r2I", "IL-UZlbO3zI", "-_txeeBP6dg", "iH7BiZvsczM", "rIKuiZVHfZo", "HRw20b6hb_s", "xOQPha-de4A", "L6IXwj-_X1k", "_7--BDD2pxk", "Xaq53-12iW8", "bfb-ZBwdvpo", "3DLbHio3ivA", "xhpwyar65ms", "UzEr8RISXds", "tHU6PeO4WDs", "2z1AaBGzA1g", "y-t3hyj7Mz8", "5ZUXEQ6d0dM", "pn8GF5HaKZc", "wH3XASrC2DA", "C_oeOAG0G5E", "c8gYHg1lZCg", "cPEXUpZ6CWk", "jST7T0L_k_w", ...] 13:56:42.925 [debug] QUERY OK source="media_items" db=4.7ms idle=521.7ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [6] 13:56:42.928 [debug] QUERY OK source="tasks" db=0.5ms idle=48.7ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [203051, 6, ~U[2026-01-03 02:56:42Z], ~U[2026-01-03 02:56:42Z]] 13:56:42.929 [info] {"args":{"id":6},"id":203027,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":533562,"event":"job:stop","queue_time":468062,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 13:56:54.257 [info] GET /media/ef0de8e6-3c86-4e00-96a6-03c734902ea7/stream 13:56:54.257 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.stream/2 Parameters: %{"uuid" => "ef0de8e6-3c86-4e00-96a6-03c734902ea7", "v" => "1767396582"} Pipelines: [:maybe_basic_auth] 13:56:54.259 [debug] QUERY OK source="media_items" db=1.1ms idle=1880.9ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."uuid" = ?) ["ef0de8e6-3c86-4e00-96a6-03c734902ea7"] 13:56:54.279 [debug] Invalid range request for media item: ef0de8e6-3c86-4e00-96a6-03c734902ea7 - serving full file 13:56:54.279 [info] Sent 200 in 22ms 13:56:59.450 [info] {"args":{"id":10},"id":203028,"meta":{},"system_time":1767409019450413724,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 13:56:59.451 [debug] QUERY OK source="sources" db=0.9ms idle=1073.8ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [10] 13:56:59.452 [debug] QUERY OK source="settings" db=0.5ms idle=1013.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:56:59.453 [debug] QUERY OK source="media_profiles" db=0.6ms idle=76.0ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:56:59.454 [debug] QUERY OK source="settings" db=0.4ms idle=11.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:56:59.454 [debug] Fetching recent media IDs from YouTube API for playlist: UUmHz7DQbbkcY_UoWY8bBJLw 13:56:59.455 [debug] QUERY OK source="settings" db=0.3ms idle=4.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:56:59.455 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 13:56:59.817 [debug] QUERY OK source="media_items" db=5.6ms idle=359.6ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND m0."media_id" IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [10, "PhjtM9ePmYY", "BYRqpIciNLg", "KKoDQ42Fcpk", "AifAIqHezb8", "sjsS60OTXSQ", "KVouvdlUtGQ", "Th4RJNVZN3Q", "a9Zj-iWYC4w", "Z2_oFD9DMd0", "OW9WywZF_d4", "hFSwWzxrqUA", "XsPrNwyLDJM", "9NUcKPnPMEw", "GvP1jo9RstE", "8jul3DEwgMY", "e4K0Co-JeKQ", "wxoYf3KBlis", "YFQm8Hk73ug", "iu5rnQkfO6M", "RESslu3Bhuk", "vn9VDbacUgQ", "mLozqDnhqpQ", "GWXCCBsOMSg", "OXIpbrvFxfE", "hbZb1Q0mM7k", "lj2JTO1L1Tc", "dGjMw1SkmjU", "vBQFfmlTK_4", "91WqepC8kS0", "UUZfxQhKmfA", "aPsq5nqvhxg", "AJ7atBkisOU", "2fZ0nkP5dfo", "qKZXQGCLRJY", "F26dxTMmW10", "cYPuhhATDXc", "uLrOyIpjkZ8", "kDu56nXRqGQ", "I4lBTlClwww", "h23xksD0dN0", "SgameZUfeGo", "NPgbgiRJCxA", "-v88e4T8i_E", "HkgV_-nJOuE", "3h1vM0lIrpM", "gjExqY_iB38", "5ScP_aPBEiQ", "t5CkW-CKTZs", "gKKRYcy4BbU", ...] 13:56:59.819 [debug] QUERY OK source="settings" db=0.5ms idle=366.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:56:59.820 [debug] QUERY OK source="settings" db=0.4ms idle=366.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:56:59.820 [debug] Running yt-dlp command for action: get_media_attributes 13:56:59.823 [debug] QUERY OK source="settings" db=0.4ms idle=368.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:56:59.823 [debug] QUERY OK source="settings" db=0.3ms idle=368.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:56:59.824 [debug] QUERY OK source="settings" db=0.3ms idle=6.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:56:59.824 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=Z2_oFD9DMd0 --simulate --skip-download --output /downloads/Switch Angel/Season %(upload_date>%Y)S/s%(upload_date>%Y)Se%(upload_date>%m%d)S00 - %(title)S.%(ext)S --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --print-to-file %(.{id,title,live_status,original_url,description,aspect_ratio,duration,upload_date,timestamp,playlist_index,filename})j /tmp/pinchflat/data/37/59/3759fd3708154035bb779aaf52495c9a133e13cb74089c17a8b324df02477373.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 13:57:00.204 [info] {"source":"oban","duration":525,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 13:57:04.201 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=Z2_oFD9DMd0 --simulate --skip-download --output /downloads/Switch Angel/Season %(upload_date>%Y)S/s%(upload_date>%Y)Se%(upload_date>%m%d)S00 - %(title)S.%(ext)S --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --print-to-file %(.{id,title,live_status,original_url,description,aspect_ratio,duration,upload_date,timestamp,playlist_index,filename})j /tmp/pinchflat/data/37/59/3759fd3708154035bb779aaf52495c9a133e13cb74089c17a8b324df02477373.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 1 with: ERROR: [youtube] Z2_oFD9DMd0: This live event will begin in a few moments. 13:57:04.201 [error] Error creating media item 'Z2_oFD9DMd0' from URL: {:error, "ERROR: [youtube] Z2_oFD9DMd0: This live event will begin in a few moments.\n", 1} 13:57:04.204 [debug] QUERY OK source="media_items" db=2.7ms idle=824.8ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [10] 13:57:04.210 [debug] QUERY OK source="tasks" db=0.8ms idle=832.2ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [203052, 10, ~U[2026-01-03 02:57:04Z], ~U[2026-01-03 02:57:04Z]] 13:57:04.211 [info] {"args":{"id":10},"id":203028,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":4760229,"event":"job:stop","queue_time":778037,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 13:57:06.475 [info] {"args":{"id":9},"id":203029,"meta":{},"system_time":1767409026475504727,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 13:57:06.476 [debug] QUERY OK source="sources" db=0.4ms idle=1099.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [9] 13:57:06.477 [debug] QUERY OK source="settings" db=0.2ms idle=1099.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:57:06.477 [debug] QUERY OK source="media_profiles" db=0.2ms idle=1014.5ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:57:06.478 [debug] QUERY OK source="settings" db=0.3ms idle=10.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:57:06.478 [debug] Fetching recent media IDs from YouTube API for playlist: UUy0Pr5u-MwGXXzp_GDd4m_g 13:57:06.478 [debug] QUERY OK source="settings" db=0.2ms idle=3.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:57:06.478 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 13:57:06.909 [debug] QUERY OK source="media_items" db=2.9ms idle=430.1ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND m0."media_id" IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [9, "97DBlIPSMkI", "V7Q9VnfzRqE", "Nub2m3iioSw", "Tpk6NNZubqU", "L4Eh-MtBFFk", "sa8p75KJqOc", "2gpPC0vsry0", "B2l4YfAav6M", "iL1qKxcaZnU", "NH5AAcLn03o", "8fOaCUvVQpY", "8aQ7sJ9EyaY", "ld0ngHU3YQ0", "uKzsA5kc8jw", "_A1dxw_T6dw", "TFVA0Bc5ajA", "IgFSOa0RBxs", "fGAe2cenBhs", "a6_0p8e42Y4", "vnR7jnJYN-k", "db6_ragog48", "SMKDYoXrZzw", "-fM_uGwlRlU", "kRxJ2g3T0zs", "GgU7L-z0kbA", "yFZJ6Qb8mDY", "YkyTbtgcfJU", "k01ARI01oMU", "ToFKhGfGgc0", "MU8JlJIuwh4", "IY36QIh6VG8", "brtcZFHW0P4", "A39Glu9I9fk", "Ib_1jixUkLw", "c9UIDwF7oS4", "CcSE-YHRJP4", "Tpmb_mTKuhs", "yNbz6f5dMLE", "BAVQcOWZi-Y", "Fa7RxeYNUTw", "teIoBQdGT5s", "UqykI_3CT-g", "vBeWkDTK6Eg", "qOp_nyKqmic", "fEqSlPpXHYk", "lII4lxNpPVg", "BaxD8BI3wI4", "me_afppRbyI", "C69B2k3fAvs", ...] 13:57:06.915 [debug] QUERY OK source="media_items" db=3.8ms idle=435.0ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [9] 13:57:06.919 [debug] QUERY OK source="tasks" db=0.6ms idle=439.5ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [203053, 9, ~U[2026-01-03 02:57:06Z], ~U[2026-01-03 02:57:06Z]] 13:57:06.919 [info] {"args":{"id":9},"id":203029,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":443558,"event":"job:stop","queue_time":405869,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 13:57:12.883 [info] {"source":"oban","duration":2666,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:57:23.585 [info] {"args":{"id":11},"id":203030,"meta":{},"system_time":1767409043584726063,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 13:57:23.586 [debug] QUERY OK source="sources" db=0.5ms idle=1208.5ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [11] 13:57:23.587 [debug] QUERY OK source="settings" db=0.5ms idle=1014.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:57:23.588 [debug] QUERY OK source="media_profiles" db=0.4ms queue=0.1ms idle=210.6ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:57:23.589 [debug] QUERY OK source="settings" db=0.4ms queue=0.2ms idle=10.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:57:23.589 [debug] Fetching recent media IDs from YouTube API for playlist: UUJ901NqoRaXMnIm7aOjLyuA 13:57:23.590 [debug] QUERY OK source="settings" db=0.3ms queue=0.1ms idle=5.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:57:23.590 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 13:57:23.954 [debug] QUERY OK source="media_items" db=2.8ms idle=364.8ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND m0."media_id" IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [11, "1ji7g8qZJ_4", "xP5WmZg7OMg", "HBoV87Jndh8", "-zpzRklxMEo", "9AX85j6Lp4M", "p2U9d4FWDaI", "hfT6XVSa2xE", "qBOKYwe8NzA", "Cf5jL5JNq7k", "bAV0y2acB9c", "XE6JvrChQ_Q", "Efv456Ks9ms", "qgiJ4C5s46U", "KaVC_mTFqHk", "M6gat-hai0I", "_xwFJzOtQv0", "Ao-M_YvfhXY", "SKHWQwf0ago", "gmuFtWZG3v8", "H4oeJ87TMt4", "rS2fDo6mhS8", "aOF6Pe_bTeI", "x8B3Z91qkoE", "fVvYTWAHoBQ", "8r6xqWTqcPQ", "k677A--BwGE", "CSTtrz8t1eg", "w6Ej3Iim4Ic", "jO8S8_KX6p0", "tslsVdOjWFM", "dckL2BCDYmQ", "E3N8_pRRtGM", "qeOEDUgy5xA", "MIPvNqPwMxc", "V2GelRPp5fg", "jWH5H6Y6T-A", "1ObIAwtqt9k", "yVdv1xVggZ4", "Pxpz4211gMI", "UEUAHI0AZu4", "gitCR-iTofw", "eTg2rHYqUZc", "QnOIm4U7Dzs", "RYNFRbP4OWQ", "R3kNCz120XM", "vMflt2fJZYw", "4DkhBa_L_4E", "4IqFTPw6Mzk", "AepfCktyPLk", ...] 13:57:23.961 [debug] QUERY OK source="media_items" db=4.7ms idle=369.0ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [11] 13:57:23.965 [debug] QUERY OK source="tasks" db=0.6ms idle=10.6ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [203054, 11, ~U[2026-01-03 02:57:23Z], ~U[2026-01-03 02:57:23Z]] 13:57:24.007 [info] {"args":{"id":11},"id":203030,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":380565,"event":"job:stop","queue_time":344553,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 13:57:42.885 [info] {"source":"oban","duration":1989,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:57:44.756 [info] GET /sources/17/media/10257 13:57:44.757 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "10257", "source_id" => "17"} Pipelines: [:browser] 13:57:44.758 [debug] QUERY OK source="media_items" db=0.5ms idle=1380.8ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [10257] 13:57:44.759 [debug] QUERY OK source="tasks" db=0.3ms queue=0.1ms idle=1382.2ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [10257] 13:57:44.760 [debug] QUERY OK source="sources" db=0.6ms idle=1121.5ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [17] 13:57:44.760 [debug] QUERY OK source="settings" db=0.1ms idle=383.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:57:44.761 [debug] QUERY OK source="settings" db=0.2ms idle=120.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:57:44.762 [debug] QUERY OK source="settings" db=0.2ms idle=3.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:57:44.762 [debug] QUERY OK source="media_profiles" db=0.2ms idle=2.8ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:57:44.764 [info] Sent 200 in 8ms 13:58:00.206 [info] {"source":"oban","duration":674,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 13:58:02.712 [info] {"args":{"id":15},"id":203031,"meta":{},"system_time":1767409082712282800,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 13:58:02.713 [debug] QUERY OK source="sources" db=0.7ms idle=335.7ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [15] 13:58:02.714 [debug] QUERY OK source="settings" db=0.4ms idle=336.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:58:02.715 [debug] QUERY OK source="media_profiles" db=0.6ms idle=337.4ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:58:02.715 [debug] QUERY OK source="settings" db=0.5ms idle=11.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:58:02.716 [debug] Fetching recent media IDs from YouTube API for playlist: UU5qRAYQmCLx8hFGIiTWSQvA 13:58:02.716 [debug] QUERY OK source="settings" db=0.4ms idle=4.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:58:02.716 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 13:58:03.123 [debug] QUERY OK source="media_items" db=6.5ms idle=402.8ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND m0."media_id" IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [15, "EMmIdkwn6a4", "EBT3EIoJpDc", "P2j2jM33fbk", "KuYhCywx8JM", "EteM8YNAFu8", "-KN9sfrroJA", "35D6yzUQM8I", "pIqvmN8ePkc", "rR5RqL2cjPE", "B2mmx85ZIsE", "b-jTeTJ1ekk", "Qa4dYWqfgmg", "TZZgrQEsl4c", "hMFEigXIhgA", "yf8ozrYeFEk", "QoCmQRZKU_c", "Qa9rFTiItTE", "Kxw9tq49VBM", "aLj4QgEf7gQ", "-D7c5td5vhw", "UNJUpex0blc", "Afa2PJq3okY", "r9A1srY7LdU", "m6YZoOWrLlk", "RKSlnQcuZt4", "qEjkDPJmKIo", "fZirHVq8wp0", "jdB56zAMJgE", "F92Oe7JuDtI", "luEgOCX58gw", "9CkNfdQpsuo", "eC3Mv474A8c", "mq6lsIgLLqY", "Wqmn4OTW6Fw", "4yYMQFLVRNc", "TsdMEmH2Lsw", "HQeTYLxz6iY", "V-JtebgnFoM", "2cXS3i36Kh8", "wznCZtGitN8", "2tYVGxZMOiQ", "9bxljq6ljbE", "9hHVjpo_HDA", "w8bqGx4ZtYQ", "yFYGd9irJ5k", "WTfhL2-cT1U", "LCR3ZsqWhuo", "Tj09jojsiaM", "_GZvVqjqlM0", ...] 13:58:03.134 [debug] QUERY OK source="media_items" db=9.2ms idle=411.2ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [15] 13:58:03.139 [debug] QUERY OK source="tasks" db=0.8ms idle=421.3ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [203055, 15, ~U[2026-01-03 02:58:03Z], ~U[2026-01-03 02:58:03Z]] 13:58:03.140 [info] {"args":{"id":15},"id":203031,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":426882,"event":"job:stop","queue_time":434688,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 13:58:07.727 [info] {"args":{"id":18},"id":203032,"meta":{},"system_time":1767409087727400549,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 13:58:07.728 [debug] QUERY OK source="sources" db=0.8ms idle=1350.8ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [18] 13:58:07.729 [debug] QUERY OK source="settings" db=0.6ms idle=1351.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:58:07.730 [debug] QUERY OK source="media_profiles" db=0.5ms idle=1014.7ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:58:07.731 [debug] QUERY OK source="settings" db=0.4ms idle=11.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:58:07.731 [debug] Fetching recent media IDs from YouTube API for playlist: UUuisDAMnvHMYuLFRedMgmVw 13:58:07.731 [debug] QUERY OK source="settings" db=0.3ms idle=4.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:58:07.731 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 13:58:08.118 [debug] QUERY OK source="media_items" db=4.5ms idle=385.1ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND m0."media_id" IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [18, "mf2Em7F_qDM", "PjvBtlIGGQU", "EF_PO-pALOQ", "j9eh7huEF4A", "y3FGuwfGzL0", "ZWH_eu9wdUE", "UccWWifa8jA", "0L8xWydKOhk", "CkSloYV3ay4", "SkQ7ywGW2HY", "QM3qu001Xdk", "jOTurZWIEmw", "pojDco-WhA4", "GD19Y1VYBKY", "cvViWSBLu-U", "wXm5ocXv9ho", "uB1Tk9eXQbk", "I7vb-PGArW4", "0h9qvAA5dfQ", "7yx-SecBATo", "oj1ySj7TVJk", "dtTdjRB4Q4g", "mpfcVNb8Mhs", "D3MFnCKv2Mc", "458_RTLWN2E", "W26HiyQ5k1s", "w4NDxPYJs1I", "cxuEV05UN7U", "5cPjR5FVDOw", "nJhbZNSrP4c", "X9Eu7mui35E", "wrgZHIpa6F0", "JEN7jfNqy1A", "v31DYiS2LbY", "iJfD5wWLvuM", "qPVTMbiyPLE", "rM_nvsztYlw", "IoD1j3ZG-SQ", "DDnqxbWvIgQ", "HIhF6C1yc7M", "DlNIxjiqQvs", "JO0-kOXXMEw", "2DihqSsed3w", "uDlvlF5iKz8", "v2jg_5WZ41o", "JekH9K8_SS8", "xVV_6qW_Ho8", "qYOABpvD49s", "VAw8zvyLmfE", ...] 13:58:08.127 [debug] QUERY OK source="media_items" db=6.6ms idle=390.6ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [18] 13:58:08.131 [debug] QUERY OK source="tasks" db=0.9ms idle=398.5ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [203056, 18, ~U[2026-01-03 02:58:08Z], ~U[2026-01-03 02:58:08Z]] 13:58:08.132 [info] {"args":{"id":18},"id":203032,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":404030,"event":"job:stop","queue_time":472843,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 13:58:12.888 [info] {"source":"oban","duration":1425,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:58:18.764 [info] {"args":{"id":16},"id":203033,"meta":{},"system_time":1767409098764132499,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 13:58:18.765 [debug] QUERY OK source="sources" db=0.8ms idle=1388.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [16] 13:58:18.767 [debug] QUERY OK source="settings" db=0.7ms idle=1015.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:58:18.768 [debug] QUERY OK source="media_profiles" db=0.6ms idle=390.2ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:58:18.768 [debug] QUERY OK source="settings" db=0.5ms idle=11.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:58:18.768 [debug] Fetching recent media IDs from YouTube API for playlist: UUPPfK7Nq_yQR84rn1wcTXBg 13:58:18.769 [debug] QUERY OK source="settings" db=0.3ms idle=5.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:58:18.769 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 13:58:19.183 [debug] QUERY OK source="media_items" db=5.2ms queue=0.1ms idle=412.1ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND m0."media_id" IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [16, "BiTNUZ2zONY", "7pVLE7ggkcc", "YAh-xEteBz4", "6hNpMT5OwGo", "vx3oGZYqxm4", "7W_ZSNuS-4w", "CxUC2HXvO84", "RxapAZRYJ6I", "f2ainZL8Tzk", "KJtASaKc95g", "yBCh5cyI0Po", "dg_HQL3GBcY", "ZiVvXPpo0eE", "YO1TnWptv3o", "HwnBnsQBeOA", "CCE2v3oIa74", "OWVPYr9e76Y", "VApJtIyMEec", "XtOIQYVq26o", "gZL1KzV54Cw", "kmU-Eazta1s", "XXthHXEpEP8", "dPw_HkMgYI0", "rxq-TvgNCBU", "SaCbUtTuLhA", "TWLqSk4ZlN0", "p7_rduK5WA0", "lNZ56C-f4a8", "GlK3f1cs_l4", "Yabwyb14-BQ", "WupRwvJ7sOc", "MhpoNL1gZbw", "yUfm6AbtJ0g", "y8zfgIgZ4c0", "gOwjmKMmkV4", "aTiunvocl5c", "KebjX3KEgWQ", "0T2MYXljL5o", "i7sbS92R4cg", "66CDGzjLBtY", "T_W0FWiJmM8", "u_80rUKItGc", "C9_wibbg1Ug", "A4mg1ZUb-7s", "YmUfZt4Ku9s", "DoWsgrlIjYU", "gc5ojxTuwOg", "3AMdPMoGJus", "htYY8VwN-9g", ...] 13:58:19.191 [debug] QUERY OK source="media_items" db=3.8ms idle=420.1ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [16] 13:58:19.195 [debug] QUERY OK source="tasks" db=0.7ms idle=425.2ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [203057, 16, ~U[2026-01-03 02:58:19Z], ~U[2026-01-03 02:58:19Z]] 13:58:19.196 [info] {"args":{"id":16},"id":203033,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":431550,"event":"job:stop","queue_time":543504,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 13:58:42.891 [info] {"source":"oban","duration":2478,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:58:49.361 [info] GET /sources/13/media/12730 13:58:49.362 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "12730", "source_id" => "13"} Pipelines: [:browser] 13:58:49.363 [debug] QUERY OK source="media_items" db=0.6ms idle=985.6ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [12730] 13:58:49.365 [debug] QUERY OK source="sources" db=0.7ms queue=0.1ms idle=986.9ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [13] 13:58:49.365 [debug] QUERY OK source="tasks" db=1.0ms idle=986.9ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [12730] 13:58:49.365 [debug] QUERY OK source="oban_jobs" db=0.4ms idle=988.2ms SELECT o0."id", o0."state", o0."queue", o0."worker", o0."args", o0."meta", o0."tags", o0."errors", o0."attempt", o0."attempted_by", o0."max_attempts", o0."priority", o0."attempted_at", o0."cancelled_at", o0."completed_at", o0."discarded_at", o0."inserted_at", o0."scheduled_at", o0."id" FROM "oban_jobs" AS o0 WHERE (o0."id" = ?) [180530] 13:58:49.367 [debug] QUERY OK source="settings" db=0.6ms idle=484.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:58:49.368 [debug] QUERY OK source="settings" db=0.5ms queue=0.1ms idle=4.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:58:49.369 [debug] QUERY OK source="settings" db=0.3ms idle=4.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:58:49.371 [debug] QUERY OK source="media_profiles" db=0.2ms idle=5.6ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:58:49.375 [info] Sent 200 in 13ms 13:59:00.208 [info] {"source":"oban","duration":628,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 13:59:12.894 [info] {"source":"oban","duration":2161,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:59:20.988 [info] {"args":{"id":20},"id":203034,"meta":{},"system_time":1767409160987701459,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 13:59:20.989 [debug] QUERY OK source="sources" db=0.4ms queue=0.2ms idle=611.3ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [20] 13:59:20.990 [debug] QUERY OK source="settings" db=0.3ms queue=0.2ms idle=612.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:59:20.990 [debug] QUERY OK source="media_profiles" db=0.3ms queue=0.1ms idle=613.2ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:59:20.991 [debug] QUERY OK source="settings" db=0.4ms queue=0.1ms idle=10.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:59:20.991 [debug] Fetching recent media IDs from YouTube API for playlist: UU3HjB3X8jeENm46HCkI0Inw 13:59:20.992 [debug] QUERY OK source="settings" db=0.2ms queue=0.1ms idle=4.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:59:20.992 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 13:59:21.444 [debug] QUERY OK source="media_items" db=2.5ms idle=452.3ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND m0."media_id" IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [20, "CISwNCR8EXc", "EiIJqc5mV90", "8xJUjtnu72E", "Whh2rDVxvYg", "VybtaBZZqCg", "fuIOAraiRAY", "Ri4qqynMLHk", "xglNhNm95KQ", "5hEq1j_TsEY", "9f5iUsFWqoo", "0SXIhVupLZY", "3gAJpHP3yg4", "8zlnEbQgP74", "EnTFdexbFrM", "P3AU8vUwvAs", "4dQvS_n0uy4", "T5CRSwoP5_w", "cd8IcmBLpXc", "L4nAcT3QYkA", "5gskEcRE1uo", "1xywnh3DqFQ", "fXeqjU4tHqo", "YBMxdPCG_PY", "GB5_4JUB9hc", "EtAUdnvt0kc", "y-5D2HhLbso", "q8kP0pRFRMc", "8mQkTPoWfPo", "U5I92UivGzU", "UoMTKhqTf1U", "oIvzxlDViTo", "kCnh99-yZIs", "orABz0cfQZY", "VKt2PXkavyU", "kYwyB7o7BJs", "UB1FC4Nim1Y", "kN_eMzoJJmA", "4hdpejFLkPc", "ArSlY77uV1w", "2me_AlMFJh8", "OlKsICCPadE", "SjpJZ66rGaU", "iRZp_9irH2g", "CN9qeuO04A4", "BUnuun2sL-8", "XSIfSz3ZEGc", "hW5pHqeC1t4", "_cJV_l9tlaU", "ChT4bsCpwcU", ...] 13:59:21.451 [debug] QUERY OK source="media_items" db=4.7ms idle=456.2ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [20] 13:59:21.455 [debug] QUERY OK source="tasks" db=1.0ms idle=461.3ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [203058, 20, ~U[2026-01-03 02:59:21Z], ~U[2026-01-03 02:59:21Z]] 13:59:21.456 [info] {"args":{"id":20},"id":203034,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":467531,"event":"job:stop","queue_time":560878,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 13:59:24.002 [info] {"args":{"id":21},"id":203035,"meta":{},"system_time":1767409164002472498,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 13:59:24.003 [debug] QUERY OK source="sources" db=0.5ms idle=626.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [21] 13:59:24.004 [debug] QUERY OK source="settings" db=0.7ms queue=0.1ms idle=627.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:59:24.006 [debug] QUERY OK source="media_profiles" db=0.7ms idle=628.3ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:59:24.007 [debug] QUERY OK source="settings" db=0.6ms queue=0.1ms idle=11.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:59:24.007 [debug] Fetching recent media IDs from YouTube API for playlist: UU2-i3KuYoODXsM99Z3-Gm0A 13:59:24.008 [debug] QUERY OK source="settings" db=0.4ms queue=0.1ms idle=5.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:59:24.008 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 13:59:24.367 [debug] QUERY OK source="media_items" db=4.8ms queue=0.1ms idle=358.6ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND m0."media_id" IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [21, "J5rMffRWoaE", "SpNjg65s29I", "8YoFYb6ahAc", "2z0gjjea0mQ", "2d3dU0R4Sk4", "_TFHZ9W3Jt8", "dqjpFcJG5Cc", "Pm0PXgXMNVY", "YXwzRiYgHHc", "mUK6UT_7PZo", "nE49QFWymsI", "WY4rfxfFsVA", "LHyVvVpA0xM", "HYIwk4qL2os", "RZBQe4RLdZ8", "DN5ES5PlK6c", "OaO4UInG53A", "UqcJk1mPcnQ", "NqSJZesKtFs", "3bsFFOwsQzA", "EaXJ1rQ2v5k", "jnV5Ptgg1Xc", "rXghFt-g_OM", "Y_MU28GV-M0", "OZ1fXb4gcv0", "t7JeRNvBG40", "XG41sdzNz7I", "rQFtIiVV7RA", "TviKrv1FTzc", "0iH3eN6DUbM", "AjzhbnNiJO0", "3Y2fdnw7AwM", "8Z_XpRjS2oo", "RY1Nnw_qOGc", "pUB0TU9UQhI", "eVR3mgSxjUk", "5hGYObRZMPQ", "4MemHNHi_YE", "yM6u1-_JNXo", "VGLq2Tjokl4", "XpV4r2KB0UA", "cvrpvL1kO_8", "Q4kS9l81A0k", "Mq47ro7Pc00", "GAu1Y-5EPeM", "dNIc1vTlbDc", "S1zqKNfggRQ", "zquTrv6kv-U", "-H6sKLcAL9I", ...] 13:59:24.381 [debug] QUERY OK source="media_items" db=9.1ms idle=367.2ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [21] 13:59:24.385 [debug] QUERY OK source="tasks" db=0.8ms idle=377.0ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [203059, 21, ~U[2026-01-03 02:59:24Z], ~U[2026-01-03 02:59:24Z]] 13:59:24.386 [info] {"args":{"id":21},"id":203035,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":383578,"event":"job:stop","queue_time":407685,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 13:59:42.899 [info] {"source":"oban","duration":4518,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:59:48.199 [info] GET /sources/17/media/56518 13:59:48.199 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "56518", "source_id" => "17"} Pipelines: [:browser] 13:59:48.200 [debug] QUERY OK source="media_items" db=0.9ms idle=1822.6ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [56518] 13:59:48.201 [debug] QUERY OK source="tasks" db=0.5ms idle=1824.0ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [56518] 13:59:48.202 [debug] QUERY OK source="sources" db=1.0ms idle=1824.1ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [17] 13:59:48.203 [debug] QUERY OK source="settings" db=0.7ms idle=1137.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:59:48.204 [debug] QUERY OK source="settings" db=0.5ms idle=134.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:59:48.205 [debug] QUERY OK source="settings" db=0.2ms idle=4.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:59:48.206 [debug] QUERY OK source="media_profiles" db=0.2ms idle=4.7ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:59:48.208 [info] Sent 200 in 9ms 14:00:00.210 [info] {"source":"oban","duration":723,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 14:00:12.902 [info] {"source":"oban","duration":2341,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:00:40.769 [info] GET /sources/13/media/58780 14:00:40.769 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "58780", "source_id" => "13"} Pipelines: [:browser] 14:00:40.770 [debug] QUERY OK source="media_items" db=0.6ms idle=1392.8ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [58780] 14:00:40.772 [debug] QUERY OK source="sources" db=0.9ms idle=1393.9ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [13] 14:00:40.772 [debug] QUERY OK source="tasks" db=1.2ms idle=1393.9ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [58780] 14:00:40.772 [debug] QUERY OK source="oban_jobs" db=0.3ms idle=526.6ms SELECT o0."id", o0."state", o0."queue", o0."worker", o0."args", o0."meta", o0."tags", o0."errors", o0."attempt", o0."attempted_by", o0."max_attempts", o0."priority", o0."attempted_at", o0."cancelled_at", o0."completed_at", o0."discarded_at", o0."inserted_at", o0."scheduled_at", o0."id" FROM "oban_jobs" AS o0 WHERE (o0."id" = ?) [202076] 14:00:40.773 [debug] QUERY OK source="settings" db=0.2ms idle=396.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:00:40.774 [debug] QUERY OK source="settings" db=0.3ms idle=3.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:00:40.775 [debug] QUERY OK source="settings" db=0.3ms idle=2.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:00:40.777 [debug] QUERY OK source="media_profiles" db=0.3ms idle=4.4ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 14:00:40.799 [info] Sent 200 in 29ms 14:00:42.907 [info] {"source":"oban","duration":4015,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:01:00.212 [info] {"source":"oban","duration":495,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 14:01:12.910 [info] {"source":"oban","duration":1971,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:01:28.327 [info] GET /sources/23/media/21397 14:01:28.328 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "21397", "source_id" => "23"} Pipelines: [:browser] 14:01:28.330 [debug] QUERY OK source="media_items" db=1.1ms queue=0.1ms idle=1950.8ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [21397] 14:01:28.332 [debug] QUERY OK source="tasks" db=1.6ms queue=0.1ms idle=1952.9ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [21397] 14:01:28.333 [debug] QUERY OK source="sources" db=2.0ms idle=1953.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [23] 14:01:28.334 [debug] QUERY OK source="settings" db=0.5ms queue=0.1ms idle=1941.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:01:28.335 [debug] QUERY OK source="settings" db=0.5ms queue=0.1ms idle=938.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:01:28.337 [debug] QUERY OK source="settings" db=0.3ms idle=6.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:01:28.339 [debug] QUERY OK source="media_profiles" db=0.4ms idle=5.5ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 14:01:28.405 [info] Sent 200 in 77ms 14:01:42.912 [info] {"source":"oban","duration":2018,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:02:00.214 [info] {"source":"oban","duration":638,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 14:02:11.352 [info] GET /sources/13/media/52924 14:02:11.352 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "52924", "source_id" => "13"} Pipelines: [:browser] 14:02:11.354 [debug] QUERY OK source="media_items" db=0.7ms queue=0.2ms idle=1975.2ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [52924] 14:02:11.355 [debug] QUERY OK source="tasks" db=0.5ms idle=1976.8ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [52924] 14:02:11.356 [debug] QUERY OK source="sources" db=0.6ms idle=1976.8ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [13] 14:02:11.356 [debug] QUERY OK source="settings" db=0.2ms idle=1823.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:02:11.357 [debug] QUERY OK source="settings" db=0.2ms idle=821.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:02:11.358 [debug] QUERY OK source="settings" db=0.1ms queue=0.1ms idle=3.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:02:11.360 [debug] QUERY OK source="media_profiles" db=0.2ms idle=4.4ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 14:02:11.418 [info] Sent 200 in 66ms 14:02:12.918 [info] {"source":"oban","duration":4642,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:02:17.567 [info] {"args":{"id":19},"id":203036,"meta":{},"system_time":1767409337567333839,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 14:02:17.568 [debug] QUERY OK source="sources" db=0.7ms idle=1189.8ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [19] 14:02:17.569 [debug] QUERY OK source="settings" db=0.4ms idle=1190.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:02:17.570 [debug] QUERY OK source="media_profiles" db=0.5ms idle=1014.7ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 14:02:17.571 [debug] QUERY OK source="settings" db=0.3ms idle=11.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:02:17.571 [debug] Fetching recent media IDs from YouTube API for playlist: UUaYhH3F6iB3KyW3afTHk5XA 14:02:17.571 [debug] QUERY OK source="settings" db=0.3ms idle=4.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:02:17.572 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 14:02:18.087 [debug] QUERY OK source="media_items" db=4.9ms idle=512.9ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND m0."media_id" IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [19, "mUlKcxGWvrQ", "ydfuNK4wSik", "x6cNQykYdEM", "SvyVS7zvquc", "l4O2F-1BWVI", "LYXADYUSTSg", "HpL40FdPGqk", "Wre5VWHxSug", "PdUu77SAH0I", "VCflrtok9hQ", "haEa6h8Ptf0", "c_-f7G9VSPw", "7rSLcNznix4", "OLXr-B-xwY8", "X05FPJq6_Oc", "kuL-trgOvq8", "WpBEifN8BYw", "YETks_YtraY", "bwKKd4N8Q2E", "PpNfOqbt0a8", "GyifuiQ6p48", "SkoFBCBASto", "-GNid2M6IC8", "muehDmLuJSw", "nBx5yssxPDk", "Q6vzDo6it9o", "AH9Z6_PlKhA", "dZfthyLyjDk", "j9UuSMaqX9Q", "jmoVFLUvyD0", "tKm_pnNEDsc", "boVAiizeh1M", "FNtBH6k7Jmo", "MDhN5WGOJ_o", "P-UQX5L_Ff0", "kys3lRzOOEY", "VDHSC2Dl8f0", "JU0uEdyPKlE", "0sSWAzq7rjc", "HOLXNrjWeuo"] 14:02:18.090 [debug] QUERY OK source="media_items" db=2.0ms idle=518.6ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [19] 14:02:18.095 [debug] QUERY OK source="tasks" db=1.0ms idle=522.4ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [203060, 19, ~U[2026-01-03 03:02:18Z], ~U[2026-01-03 03:02:18Z]] 14:02:18.096 [info] {"args":{"id":19},"id":203036,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":528284,"event":"job:stop","queue_time":422518,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 14:02:18.571 [info] {"args":{"id":23},"id":203037,"meta":{},"system_time":1767409338571262814,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 14:02:18.572 [debug] QUERY OK source="sources" db=0.7ms idle=476.2ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [23] 14:02:18.573 [debug] QUERY OK source="settings" db=0.4ms idle=476.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:02:18.574 [debug] QUERY OK source="media_profiles" db=0.4ms idle=468.7ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 14:02:18.574 [debug] QUERY OK source="settings" db=0.7ms idle=11.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:02:18.575 [debug] Fetching recent media IDs from YouTube API for playlist: UUSHvlfXUGYGWmDBg-afA5Bg 14:02:18.575 [debug] QUERY OK source="settings" db=0.3ms idle=4.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:02:18.575 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 14:02:18.967 [debug] QUERY OK source="media_items" db=3.7ms idle=390.8ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND m0."media_id" IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [23, "QASZbKPkS08", "pr7MMAFzHe8", "DG0BSdc6kKg", "o7DJZCU8q34", "G5A2QGwRmS4", "PER4GK9LCTA", "GzIS1WZFKtc", "24P4MFV-HrM", "6x6df3uagb4", "vALU9LhFKhE", "KF1grNBv5hU", "SLSPmp8-tXE", "53liPfHBgYQ", "zykmoM0qjbA", "boyfPk5qdBM", "H2VYuo7yb2o", "75_mYLpHDr4", "PSnlGB9aKVI", "vFBFSi2XqrQ", "X2z1ugOwR2A", "ePV6FKD1J9U", "ipxj_tl_6XY", "6l9-ctzSbCo", "xu3DTyCW3Yk", "wpAt0QaSk7U", "NXy9Sg0KIMY", "ml5AG_Q0y6w", "h_Uq6-e06y8", "37_rLteuwG4", "QCbf0kOJ8lA"] 14:02:18.970 [debug] QUERY OK source="media_items" db=2.0ms idle=395.4ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [23] 14:02:18.975 [debug] QUERY OK source="tasks" db=1.1ms idle=398.8ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [203061, 23, ~U[2026-01-03 03:02:18Z], ~U[2026-01-03 03:02:18Z]] 14:02:18.976 [info] {"args":{"id":23},"id":203037,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":404465,"event":"job:stop","queue_time":623861,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 14:02:19.576 [info] {"args":{"id":25},"id":203038,"meta":{},"system_time":1767409339576503711,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 14:02:19.577 [debug] QUERY OK source="sources" db=0.7ms idle=601.2ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [25] 14:02:19.578 [debug] QUERY OK source="settings" db=0.7ms idle=601.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:02:19.579 [debug] QUERY OK source="media_profiles" db=0.5ms idle=596.0ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 14:02:19.580 [debug] QUERY OK source="settings" db=0.5ms queue=0.1ms idle=12.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:02:19.580 [debug] Fetching recent media IDs from YouTube API for playlist: UUWstkeBSSIEgw6n5qnlXXuA 14:02:19.581 [debug] QUERY OK source="settings" db=0.6ms idle=4.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:02:19.581 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 14:02:20.280 [debug] QUERY OK source="media_items" db=2.6ms idle=700.2ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND m0."media_id" IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [25, "_sYSZI--9TA", "T7P86y4vYKs", "qWpf9ysgE04", "81v7r86tRRE", "a3LYS6jzPKA", "o5UKHwwdhmA", "6CCxzLKCHYA", "VONzFNo8uW4", "jJUysp-6qBs", "3KzmAquL3e4", "5cgK_MdFz7s", "bHpsXfutTFY", "kVhFNQj86Ng", "nyd40ZDhRw4"] 14:02:20.283 [debug] QUERY OK source="media_items" db=2.1ms idle=702.8ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [25] 14:02:20.288 [debug] QUERY OK source="tasks" db=1.0ms idle=706.0ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [203062, 25, ~U[2026-01-03 03:02:20Z], ~U[2026-01-03 03:02:20Z]] 14:02:20.289 [info] {"args":{"id":25},"id":203038,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":712328,"event":"job:stop","queue_time":626797,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 14:02:20.582 [info] {"args":{"id":17},"id":203039,"meta":{},"system_time":1767409340581857451,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 14:02:20.583 [debug] QUERY OK source="sources" db=1.0ms idle=293.8ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [17] 14:02:20.585 [debug] QUERY OK source="settings" db=1.0ms queue=0.1ms idle=294.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:02:20.586 [debug] QUERY OK source="media_profiles" db=0.7ms idle=287.2ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 14:02:20.587 [debug] QUERY OK source="settings" db=0.5ms idle=13.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:02:20.587 [debug] Fetching recent media IDs from YouTube API for playlist: UUEIwxahdLz7bap-VDs9h35A 14:02:20.588 [debug] QUERY OK source="settings" db=0.5ms idle=6.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:02:20.589 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 14:02:20.948 [debug] QUERY OK source="media_items" db=5.2ms idle=359.3ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND m0."media_id" IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [17, "kuMUquaeE6g", "-NzfTE8RI4w", "2eiYALLYBFE", "J_vXK9uvRf4", "tRDxBwverlI", "ymlNErMdI2k", "hM1l19H0tX8", "qg01MgiVT9k", "a3l6FdpltbQ", "NtZaP8VMv0c", "ayicYezINas", "zoTuSOEOvPw", "U7NHNT3M-tw", "B_PCZiNlmPw", "5glksNTKkZI", "iDsb-pxE3fA", "7PJi9KSDVbQ", "CfhsW1kaa2Q", "pleHURTV6fU", "T47s4L1Wje4", "LLlghvxVoH0", "K4542wtX8B4", "rf-efIZI_Dg", "OXvdwc6NDqM", "nGEHUbTtpPY", "0FybegjTkgw", "3TgdCWBV0pg", "Qjd4CREfYbo", "pqnyUemUDF4", "6-FQSEVc_cs", "BvoDuNZ9gLA", "AjJfefo41M8", "dJSGJ1-9XWw", "Mcg9GcilBfU", "MQSwyrjTV2M", "o-dZKBwbsis", "matUCqoiSGk", "0_VdGzEk5-M", "PAOpkv0fpik", "VdwSMytC7y4", "tw5tQPm-B00", "vkD3-msLIHg", "INq7pAmaUuk", "mfTVxFapdLw", "kY2YeM5fNDw", "lkWRiks6luc", "yiCM_i8r4RM", "XzBMFsZT5gM", "dKN6XatdVkY", ...] 14:02:20.957 [debug] QUERY OK source="media_items" db=5.6ms idle=366.4ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [17] 14:02:20.963 [debug] QUERY OK source="tasks" db=0.9ms idle=373.3ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [203063, 17, ~U[2026-01-03 03:02:20Z], ~U[2026-01-03 03:02:20Z]] 14:02:20.964 [info] {"args":{"id":17},"id":203039,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":381429,"event":"job:stop","queue_time":649209,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 14:02:42.921 [info] {"source":"oban","duration":2643,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:02:47.535 [info] GET /sources/17/media/39300 14:02:47.535 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "39300", "source_id" => "17"} Pipelines: [:browser] 14:02:47.537 [debug] QUERY OK source="media_items" db=1.1ms queue=0.1ms idle=1157.7ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [39300] 14:02:47.539 [debug] QUERY OK source="tasks" db=1.4ms idle=1159.5ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [39300] 14:02:47.539 [debug] QUERY OK source="sources" db=1.8ms idle=1159.7ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [17] 14:02:47.540 [debug] QUERY OK source="settings" db=0.6ms idle=1162.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:02:47.541 [debug] QUERY OK source="settings" db=0.7ms idle=868.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:02:47.543 [debug] QUERY OK source="settings" db=0.7ms idle=5.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:02:47.544 [debug] QUERY OK source="media_profiles" db=0.6ms idle=4.8ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 14:02:47.546 [info] Sent 200 in 11ms 14:03:00.216 [info] {"source":"oban","duration":775,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 14:03:12.923 [info] {"source":"oban","duration":1584,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:03:21.609 [info] GET /sources/13/media/38817 14:03:21.609 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "38817", "source_id" => "13"} Pipelines: [:browser] 14:03:21.610 [debug] QUERY OK source="media_items" db=0.5ms queue=0.1ms idle=1232.0ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [38817] 14:03:21.612 [debug] QUERY OK source="tasks" db=0.8ms idle=835.7ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [38817] 14:03:21.612 [debug] QUERY OK source="sources" db=0.9ms idle=233.6ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [13] 14:03:21.614 [debug] QUERY OK source="settings" db=0.3ms queue=0.1ms idle=235.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:03:21.615 [debug] QUERY OK source="settings" db=0.3ms queue=0.1ms idle=236.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:03:21.616 [debug] QUERY OK source="settings" db=0.2ms queue=0.1ms idle=5.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:03:21.619 [debug] QUERY OK source="media_profiles" db=0.2ms idle=6.1ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 14:03:21.667 [info] Sent 200 in 58ms 14:03:42.925 [info] {"source":"oban","duration":1397,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:03:47.869 [info] {"args":{"id":7},"id":203044,"meta":{},"system_time":1767409427868702286,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 14:03:47.869 [debug] QUERY OK source="sources" db=0.4ms queue=0.1ms idle=491.3ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [7] 14:03:47.870 [debug] QUERY OK source="settings" db=0.3ms queue=0.1ms idle=492.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:03:47.871 [debug] QUERY OK source="media_profiles" db=0.3ms queue=0.1ms idle=492.9ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 14:03:47.872 [debug] QUERY OK source="settings" db=0.3ms queue=0.1ms idle=11.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:03:47.872 [debug] Fetching recent media IDs from YouTube API for playlist: UUwnKziETDbHJtx78nIkfYug 14:03:47.873 [debug] QUERY OK source="settings" db=0.2ms queue=0.1ms idle=4.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:03:47.873 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 14:03:48.255 [debug] QUERY OK source="media_items" db=4.0ms queue=0.1ms idle=380.4ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND m0."media_id" IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [7, "mC5NdpSMDks", "ccV3u3D9ONE", "cVCDjEfPzII", "n0X2rqzKTgM", "dcuCvRNqmpY", "GG1qX8jHKGo", "k9wkleHFvo0", "CWoYVlMuUNQ", "xlfeieH4z38", "eZM2Ik-FHEU", "CtcTG8-qzbA", "6Mmj7mf1qlg", "InwVO9qBjqs", "1Hp-W2bpPrw", "VtE5sTpkn7k", "8dOJypt2F70", "Evm4t4prtWo", "taLzgvbrnv0", "rgCrnyf5JEI", "PHhc-48JT3U", "vFKjpNNjNGw", "VJQlOI70ubw", "E5cfNq0DO90", "DNBGSsZatbY", "pna1NyaHTls", "CUHao-vA98g", "cPN9BJe_RQw", "rCBt4XgCX-0", "f4g6KKGMmEI", "P_I5Jsc3xRw", "fPaU2l7RktM", "0PVwt01b6fs", "0qMDM4Y4Hwo", "Ld285PDsHvs", "p1mQC71wplA", "9k5JhKK6WlA", "WPxrifmtlQI", "nVNBmK7a1y8", "QDnMYztaxfI", "gxsaWhXG1Gg", "RMtkKiyrXic", "JKlJ6OW67Bk", "Sjmb8O-fRWI", "qZhD4G7ENSY", "OTWDzMjgsEY", "Y_eCu_pW6-4", "DplgNsjOPRg", "l6hHI3AVoYM", "joAhvj7dfsc", ...] 14:03:48.264 [debug] QUERY OK source="media_items" db=4.4ms idle=389.1ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [7] 14:03:48.270 [debug] QUERY OK source="tasks" db=0.6ms idle=396.3ms INSERT INTO "tasks" ("job_id","media_item_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [203064, 8350, ~U[2026-01-03 03:03:48Z], ~U[2026-01-03 03:03:48Z]] 14:03:48.275 [debug] QUERY OK source="tasks" db=1.0ms idle=6.9ms INSERT INTO "tasks" ("job_id","media_item_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [203065, 8380, ~U[2026-01-03 03:03:48Z], ~U[2026-01-03 03:03:48Z]] 14:03:48.277 [info] {"args":{"id":8350},"id":203064,"meta":{},"system_time":1767409428276788473,"max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 14:03:48.278 [info] {"args":{"id":8380},"id":203065,"meta":{},"system_time":1767409428277636113,"max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 14:03:48.279 [debug] QUERY OK source="media_items" db=0.9ms queue=0.1ms idle=4.4ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [8350] 14:03:48.279 [info] User scripts lifecyle file either not present or is empty. Skipping. 14:03:48.280 [debug] QUERY OK source="media_items" db=1.7ms idle=3.9ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [8380] 14:03:48.280 [info] User scripts lifecyle file either not present or is empty. Skipping. 14:03:48.280 [debug] QUERY OK source="sources" db=1.1ms idle=3.6ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [7] 14:03:48.282 [debug] QUERY OK source="sources" db=1.5ms queue=0.2ms idle=3.7ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [7] 14:03:48.282 [debug] QUERY OK source="media_profiles" db=1.8ms idle=1.8ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 14:03:48.284 [debug] QUERY OK source="media_profiles" db=1.5ms idle=2.4ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 14:03:48.285 [debug] QUERY OK source="media_items" db=2.1ms idle=2.4ms SELECT 1 FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) LIMIT 1 [8350] 14:03:48.286 [debug] QUERY OK source="media_items" db=0.8ms idle=2.8ms SELECT 1 FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) LIMIT 1 [8380] 14:03:48.286 [debug] QUERY OK source="media_metadata" db=0.3ms idle=3.5ms SELECT m0."id", m0."metadata_filepath", m0."thumbnail_filepath", m0."media_item_id", m0."inserted_at", m0."updated_at", m0."media_item_id" FROM "media_metadata" AS m0 WHERE (m0."media_item_id" = ?) [8350] 14:03:48.287 [debug] QUERY OK source="media_metadata" db=0.3ms idle=2.8ms SELECT m0."id", m0."metadata_filepath", m0."thumbnail_filepath", m0."media_item_id", m0."inserted_at", m0."updated_at", m0."media_item_id" FROM "media_metadata" AS m0 WHERE (m0."media_item_id" = ?) [8380] 14:03:48.288 [debug] QUERY OK source="media_profiles" db=1.1ms idle=1.5ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 14:03:48.288 [debug] QUERY OK source="media_profiles" db=0.9ms idle=0.7ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 14:03:48.290 [debug] QUERY OK source="settings" db=0.7ms idle=1.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:03:48.290 [debug] QUERY OK source="settings" db=0.8ms idle=2.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:03:48.290 [debug] QUERY OK source="tasks" db=1.6ms queue=0.2ms idle=1.6ms INSERT INTO "tasks" ("job_id","media_item_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [203066, 8401, ~U[2026-01-03 03:03:48Z], ~U[2026-01-03 03:03:48Z]] 14:03:48.290 [debug] QUERY OK source="settings" db=0.4ms queue=0.2ms idle=2.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:03:48.291 [debug] QUERY OK source="settings" db=1.0ms idle=1.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:03:48.292 [debug] Running yt-dlp command for action: get_downloadable_status 14:03:48.292 [debug] Running yt-dlp command for action: get_downloadable_status 14:03:48.294 [debug] QUERY OK source="settings" db=0.4ms idle=3.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:03:48.294 [debug] QUERY OK source="tasks" db=0.6ms queue=0.1ms idle=3.2ms INSERT INTO "tasks" ("job_id","media_item_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [203067, 8418, ~U[2026-01-03 03:03:48Z], ~U[2026-01-03 03:03:48Z]] 14:03:48.295 [debug] QUERY OK source="settings" db=1.0ms idle=2.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:03:48.295 [debug] QUERY OK source="settings" db=1.2ms idle=1.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:03:48.296 [debug] QUERY OK source="settings" db=0.5ms idle=0.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:03:48.296 [debug] QUERY OK source="settings" db=1.1ms idle=1.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:03:48.296 [debug] QUERY OK source="settings" db=0.3ms idle=1.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:03:48.297 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=bhkmFO8DikY --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/64/bc/64bc627aab9d7b15a9ff373a5aca7be0ed52d3fd0d30c57e8cc59bd6abc3dd1b.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:03:48.297 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=aCES82xfgdw --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/0a/67/0a673803d37169127fdf9ae01408a09a4cccb66bb0618bb106ab818bbfb5229c.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:03:48.298 [debug] QUERY OK source="tasks" db=0.4ms queue=0.1ms idle=1.2ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [203068, 7, ~U[2026-01-03 03:03:48Z], ~U[2026-01-03 03:03:48Z]] 14:03:48.298 [info] {"args":{"id":7},"id":203044,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":429408,"event":"job:stop","queue_time":627521,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 14:03:50.457 [info] GET /sources/13/media/12734 14:03:50.458 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "12734", "source_id" => "13"} Pipelines: [:browser] 14:03:50.459 [debug] QUERY OK source="media_items" db=1.1ms queue=0.1ms idle=1080.7ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [12734] 14:03:50.461 [debug] QUERY OK source="tasks" db=0.7ms idle=1082.3ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [12734] 14:03:50.461 [debug] QUERY OK source="sources" db=1.1ms idle=1082.4ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [13] 14:03:50.462 [debug] QUERY OK source="oban_jobs" db=0.6ms idle=1083.9ms SELECT o0."id", o0."state", o0."queue", o0."worker", o0."args", o0."meta", o0."tags", o0."errors", o0."attempt", o0."attempted_by", o0."max_attempts", o0."priority", o0."attempted_at", o0."cancelled_at", o0."completed_at", o0."discarded_at", o0."inserted_at", o0."scheduled_at", o0."id" FROM "oban_jobs" AS o0 WHERE (o0."id" = ?) [187553] 14:03:50.464 [debug] QUERY OK source="settings" db=0.7ms idle=594.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:03:50.464 [debug] QUERY OK source="settings" db=0.4ms idle=4.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:03:50.465 [debug] QUERY OK source="settings" db=0.4ms idle=4.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:03:50.467 [debug] QUERY OK source="media_profiles" db=0.6ms idle=4.9ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 14:03:50.471 [info] Sent 200 in 14ms 14:03:53.564 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=aCES82xfgdw --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/0a/67/0a673803d37169127fdf9ae01408a09a4cccb66bb0618bb106ab818bbfb5229c.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 1 with: ERROR: [youtube] aCES82xfgdw: Sign in to confirm your age. This video may be inappropriate for some users. Use --cookies-from-browser or --cookies for the authentication. See https://github.com/yt-dlp/yt-dlp/wiki/FAQ#how-do-i-pass-cookies-to-yt-dlp for how to manually pass cookies. Also see https://github.com/yt-dlp/yt-dlp/wiki/Extractors#exporting-youtube-cookies for tips on effectively exporting YouTube cookies 14:03:53.565 [debug] QUERY OK source="settings" db=0.5ms idle=1186.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:03:53.565 [debug] QUERY OK source="settings" db=0.4ms idle=1187.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:03:53.566 [debug] Running yt-dlp command for action: get_downloadable_status 14:03:53.568 [debug] QUERY OK source="settings" db=0.4ms idle=1189.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:03:53.569 [debug] QUERY OK source="settings" db=0.4ms idle=1190.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:03:53.569 [debug] QUERY OK source="settings" db=0.3ms idle=687.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:03:53.570 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=aCES82xfgdw --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/6a/a7/6aa709bf1474cd4c248306878b8cbb59d8961f236048bd290d23569a499c1da5.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:03:53.764 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=bhkmFO8DikY --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/64/bc/64bc627aab9d7b15a9ff373a5aca7be0ed52d3fd0d30c57e8cc59bd6abc3dd1b.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 1 with: ERROR: [youtube] bhkmFO8DikY: Sign in to confirm your age. This video may be inappropriate for some users. Use --cookies-from-browser or --cookies for the authentication. See https://github.com/yt-dlp/yt-dlp/wiki/FAQ#how-do-i-pass-cookies-to-yt-dlp for how to manually pass cookies. Also see https://github.com/yt-dlp/yt-dlp/wiki/Extractors#exporting-youtube-cookies for tips on effectively exporting YouTube cookies 14:03:53.766 [debug] QUERY OK source="settings" db=1.0ms queue=0.2ms idle=200.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:03:53.768 [debug] QUERY OK source="settings" db=0.8ms queue=0.2ms idle=201.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:03:53.770 [debug] Running yt-dlp command for action: get_downloadable_status 14:03:53.773 [debug] QUERY OK source="settings" db=0.4ms idle=203.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:03:53.773 [debug] QUERY OK source="settings" db=0.3ms queue=0.1ms idle=203.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:03:53.774 [debug] QUERY OK source="settings" db=0.3ms queue=0.1ms idle=204.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:03:53.775 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=bhkmFO8DikY --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/21/c1/21c1238dc8e1bcb8899bd403b8a53ab30a096b1098edf41c0be79c1ed68ab03b.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:03:55.901 [info] {"args":{"id":24},"id":203045,"meta":{},"system_time":1767409435900883824,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 14:03:55.902 [debug] QUERY OK source="sources" db=0.5ms queue=0.1ms idle=523.5ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [24] 14:03:55.903 [debug] QUERY OK source="settings" db=0.4ms queue=0.1ms idle=524.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:03:55.904 [debug] QUERY OK source="media_profiles" db=0.4ms queue=0.1ms idle=525.5ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 14:03:55.905 [debug] QUERY OK source="settings" db=1.0ms queue=0.1ms idle=11.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:03:55.906 [debug] Fetching recent media IDs from YouTube API for playlist: UUNTjSZfAK117b2kFGNCJfdA 14:03:55.907 [debug] QUERY OK source="settings" db=0.4ms queue=0.2ms idle=5.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:03:55.907 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 14:03:56.302 [debug] QUERY OK source="media_items" db=4.7ms idle=394.8ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND m0."media_id" IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [24, "2J48c2sukbo", "zq9gpqgWFv8", "EWdphas_OP4", "-U2sQ3e3R-0", "XdytKwHuG_8", "t-hori2Io14", "Xbemvi42Ngs", "91m4MQw_sZI", "GfUIbPqAMQs", "4VpVt3zdvL8", "q6Kd5C7O-F8", "EV6DSqTOXM0", "mMvfBUNNKIY", "C215grXAMCk", "_x6TE7hbE1k", "vycMxLco0a0", "lJWhisaNv8E", "4Blxc8mVzQs", "ztqcWc5aaks", "0Dvn039qD8I", "Vx69evZOEAE", "4dzZ44-xVds", "Rews5WNxiNk", "f-BFFWzh9uE", "RfJSMWHO0tY", "gMeUOURvDP8", "LEiL1np9sSM", "F-QeDtQ8Gy4", "9FSIF281OAo", "Shav52BfzWk", "dsCfQ3y5tHQ", "0rpt5sMb7cw", "Fe7Y152ak3Y", "HEuablkqrCg", "BRUTYHBJ_Z4", "gpaV4bgEG-g", "ppjFdEbIS4g", "lEhEMRA17bg", "tpIXmmV4ib4", "LBYQ_NLVKCw", "JsdM3k3QiPc", "TNmSVjGyZx0", "OMVYZziNjhc", "uyfyFRvng3c", "YFBg5NNEW4g", "IkZe4pXDv0k", "ZT0in30U-ug", "kqDqSLOuxmM", "ZgLsNSWN46o", ...] 14:03:56.310 [debug] QUERY OK source="media_items" db=2.0ms idle=404.7ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [24] 14:03:56.315 [debug] QUERY OK source="tasks" db=0.9ms idle=407.0ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [203069, 24, ~U[2026-01-03 03:03:56Z], ~U[2026-01-03 03:03:56Z]] 14:03:56.316 [info] {"args":{"id":24},"id":203045,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":414599,"event":"job:stop","queue_time":587850,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 14:03:58.872 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=aCES82xfgdw --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/6a/a7/6aa709bf1474cd4c248306878b8cbb59d8961f236048bd290d23569a499c1da5.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 1 with: ERROR: [youtube] aCES82xfgdw: Sign in to confirm your age. This video may be inappropriate for some users. Use --cookies-from-browser or --cookies for the authentication. See https://github.com/yt-dlp/yt-dlp/wiki/FAQ#how-do-i-pass-cookies-to-yt-dlp for how to manually pass cookies. Also see https://github.com/yt-dlp/yt-dlp/wiki/Extractors#exporting-youtube-cookies for tips on effectively exporting YouTube cookies 14:03:58.872 [error] yt-dlp download error for media item #8350: "ERROR: [youtube] aCES82xfgdw: Sign in to confirm your age. This video may be inappropriate for some users. Use --cookies-from-browser or --cookies for the authentication. See https://github.com/yt-dlp/yt-dlp/wiki/FAQ#how-do-i-pass-cookies-to-yt-dlp for how to manually pass cookies. Also see https://github.com/yt-dlp/yt-dlp/wiki/Extractors#exporting-youtube-cookies for tips on effectively exporting YouTube cookies\n" 14:03:58.873 [error] yt-dlp download will not be retried: "ERROR: [youtube] aCES82xfgdw: Sign in to confirm your age. This video may be inappropriate for some users. Use --cookies-from-browser or --cookies for the authentication. See https://github.com/yt-dlp/yt-dlp/wiki/FAQ#how-do-i-pass-cookies-to-yt-dlp for how to manually pass cookies. Also see https://github.com/yt-dlp/yt-dlp/wiki/Extractors#exporting-youtube-cookies for tips on effectively exporting YouTube cookies\n" 14:03:58.874 [info] {"args":{"id":8350},"id":203064,"meta":{},"state":"success","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":10596488,"event":"job:stop","queue_time":275742,"attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 14:03:58.884 [info] {"args":{"id":8401},"id":203066,"meta":{},"system_time":1767409438884443517,"max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 14:03:58.885 [debug] QUERY OK source="media_items" db=0.7ms queue=0.1ms idle=1506.8ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [8401] 14:03:58.886 [info] User scripts lifecyle file either not present or is empty. Skipping. 14:03:58.886 [debug] QUERY OK source="sources" db=0.6ms idle=1508.2ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [7] 14:03:58.887 [debug] QUERY OK source="media_profiles" db=0.6ms idle=986.4ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 14:03:58.888 [debug] QUERY OK source="media_items" db=0.5ms idle=13.5ms SELECT 1 FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) LIMIT 1 [8401] 14:03:58.891 [debug] QUERY OK source="media_metadata" db=0.4ms idle=6.2ms SELECT m0."id", m0."metadata_filepath", m0."thumbnail_filepath", m0."media_item_id", m0."inserted_at", m0."updated_at", m0."media_item_id" FROM "media_metadata" AS m0 WHERE (m0."media_item_id" = ?) [8401] 14:03:58.891 [debug] QUERY OK source="media_profiles" db=0.4ms idle=5.4ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 14:03:58.892 [debug] QUERY OK source="settings" db=0.3ms idle=5.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:03:58.892 [debug] QUERY OK source="settings" db=0.3ms idle=4.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:03:58.893 [debug] Running yt-dlp command for action: get_downloadable_status 14:03:58.894 [debug] QUERY OK source="settings" db=0.3ms idle=5.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:03:58.895 [debug] QUERY OK source="settings" db=0.2ms idle=3.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:03:58.895 [debug] QUERY OK source="settings" db=0.3ms idle=3.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:03:58.895 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=ZWSj0M132e8 --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/3b/9f/3b9f7e41b3e2b89ccacd8254b34fd0fe768ea17613010aa4e6a18488783e699e.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:03:59.282 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=bhkmFO8DikY --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/21/c1/21c1238dc8e1bcb8899bd403b8a53ab30a096b1098edf41c0be79c1ed68ab03b.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 1 with: ERROR: [youtube] bhkmFO8DikY: Sign in to confirm your age. This video may be inappropriate for some users. Use --cookies-from-browser or --cookies for the authentication. See https://github.com/yt-dlp/yt-dlp/wiki/FAQ#how-do-i-pass-cookies-to-yt-dlp for how to manually pass cookies. Also see https://github.com/yt-dlp/yt-dlp/wiki/Extractors#exporting-youtube-cookies for tips on effectively exporting YouTube cookies 14:03:59.282 [error] yt-dlp download error for media item #8380: "ERROR: [youtube] bhkmFO8DikY: Sign in to confirm your age. This video may be inappropriate for some users. Use --cookies-from-browser or --cookies for the authentication. See https://github.com/yt-dlp/yt-dlp/wiki/FAQ#how-do-i-pass-cookies-to-yt-dlp for how to manually pass cookies. Also see https://github.com/yt-dlp/yt-dlp/wiki/Extractors#exporting-youtube-cookies for tips on effectively exporting YouTube cookies\n" 14:03:59.283 [error] yt-dlp download will not be retried: "ERROR: [youtube] bhkmFO8DikY: Sign in to confirm your age. This video may be inappropriate for some users. Use --cookies-from-browser or --cookies for the authentication. See https://github.com/yt-dlp/yt-dlp/wiki/FAQ#how-do-i-pass-cookies-to-yt-dlp for how to manually pass cookies. Also see https://github.com/yt-dlp/yt-dlp/wiki/Extractors#exporting-youtube-cookies for tips on effectively exporting YouTube cookies\n" 14:03:59.284 [info] {"args":{"id":8380},"id":203065,"meta":{},"state":"success","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":11005734,"event":"job:stop","queue_time":275742,"attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 14:03:59.295 [info] {"args":{"id":8418},"id":203067,"meta":{},"system_time":1767409439294897159,"max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 14:03:59.296 [debug] QUERY OK source="media_items" db=1.0ms idle=400.0ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [8418] 14:03:59.297 [info] User scripts lifecyle file either not present or is empty. Skipping. 14:03:59.298 [debug] QUERY OK source="sources" db=0.9ms idle=401.6ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [7] 14:03:59.299 [debug] QUERY OK source="media_profiles" db=0.7ms idle=395.0ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 14:03:59.301 [debug] QUERY OK source="media_items" db=0.9ms queue=0.1ms idle=15.7ms SELECT 1 FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) LIMIT 1 [8418] 14:03:59.303 [debug] QUERY OK source="media_metadata" db=0.3ms idle=8.4ms SELECT m0."id", m0."metadata_filepath", m0."thumbnail_filepath", m0."media_item_id", m0."inserted_at", m0."updated_at", m0."media_item_id" FROM "media_metadata" AS m0 WHERE (m0."media_item_id" = ?) [8418] 14:03:59.304 [debug] QUERY OK source="media_profiles" db=0.5ms idle=7.2ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 14:03:59.305 [debug] QUERY OK source="settings" db=0.3ms idle=6.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:03:59.306 [debug] QUERY OK source="settings" db=0.2ms idle=6.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:03:59.306 [debug] Running yt-dlp command for action: get_downloadable_status 14:03:59.308 [debug] QUERY OK source="settings" db=0.2ms idle=6.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:03:59.308 [debug] QUERY OK source="settings" db=0.2ms idle=5.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:03:59.309 [debug] QUERY OK source="settings" db=0.3ms idle=4.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:03:59.310 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=v6jHhzj08yQ --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/cf/ae/cfae99c03a9ecfea5b7ba9e5bbf9b84137ca671a21869f805f44dc07e92187c8.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:04:00.218 [info] {"source":"oban","duration":772,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 14:04:04.018 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=ZWSj0M132e8 --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/3b/9f/3b9f7e41b3e2b89ccacd8254b34fd0fe768ea17613010aa4e6a18488783e699e.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 1 with: ERROR: [youtube] ZWSj0M132e8: Sign in to confirm your age. This video may be inappropriate for some users. Use --cookies-from-browser or --cookies for the authentication. See https://github.com/yt-dlp/yt-dlp/wiki/FAQ#how-do-i-pass-cookies-to-yt-dlp for how to manually pass cookies. Also see https://github.com/yt-dlp/yt-dlp/wiki/Extractors#exporting-youtube-cookies for tips on effectively exporting YouTube cookies 14:04:04.020 [debug] QUERY OK source="settings" db=0.9ms idle=1639.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:04:04.021 [debug] QUERY OK source="settings" db=0.2ms idle=1641.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:04:04.021 [debug] Running yt-dlp command for action: get_downloadable_status 14:04:04.023 [debug] QUERY OK source="settings" db=0.2ms idle=1105.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:04:04.024 [debug] QUERY OK source="settings" db=0.2ms idle=644.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:04:04.024 [debug] QUERY OK source="settings" db=0.3ms idle=101.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:04:04.025 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=ZWSj0M132e8 --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/a0/49/a049a83441449fb025869d277263e8e9371600e1ab3e42585991e6692a68d1a3.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:04:04.757 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=v6jHhzj08yQ --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/cf/ae/cfae99c03a9ecfea5b7ba9e5bbf9b84137ca671a21869f805f44dc07e92187c8.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 1 with: ERROR: [youtube] v6jHhzj08yQ: Sign in to confirm your age. This video may be inappropriate for some users. Use --cookies-from-browser or --cookies for the authentication. See https://github.com/yt-dlp/yt-dlp/wiki/FAQ#how-do-i-pass-cookies-to-yt-dlp for how to manually pass cookies. Also see https://github.com/yt-dlp/yt-dlp/wiki/Extractors#exporting-youtube-cookies for tips on effectively exporting YouTube cookies 14:04:04.759 [debug] QUERY OK source="settings" db=0.6ms queue=0.1ms idle=738.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:04:04.759 [debug] QUERY OK source="settings" db=0.3ms idle=738.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:04:04.760 [debug] Running yt-dlp command for action: get_downloadable_status 14:04:04.762 [debug] QUERY OK source="settings" db=0.4ms idle=738.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:04:04.763 [debug] QUERY OK source="settings" db=0.4ms idle=738.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:04:04.763 [debug] QUERY OK source="settings" db=0.3ms queue=0.1ms idle=738.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:04:04.764 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=v6jHhzj08yQ --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/39/4d/394dc04fad85f901368ac265a7c89e5bd52365cedb98be3d9aa26231e09b217a.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:04:09.524 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=ZWSj0M132e8 --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/a0/49/a049a83441449fb025869d277263e8e9371600e1ab3e42585991e6692a68d1a3.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 1 with: ERROR: [youtube] ZWSj0M132e8: Sign in to confirm your age. This video may be inappropriate for some users. Use --cookies-from-browser or --cookies for the authentication. See https://github.com/yt-dlp/yt-dlp/wiki/FAQ#how-do-i-pass-cookies-to-yt-dlp for how to manually pass cookies. Also see https://github.com/yt-dlp/yt-dlp/wiki/Extractors#exporting-youtube-cookies for tips on effectively exporting YouTube cookies 14:04:09.524 [error] yt-dlp download error for media item #8401: "ERROR: [youtube] ZWSj0M132e8: Sign in to confirm your age. This video may be inappropriate for some users. Use --cookies-from-browser or --cookies for the authentication. See https://github.com/yt-dlp/yt-dlp/wiki/FAQ#how-do-i-pass-cookies-to-yt-dlp for how to manually pass cookies. Also see https://github.com/yt-dlp/yt-dlp/wiki/Extractors#exporting-youtube-cookies for tips on effectively exporting YouTube cookies\n" 14:04:09.525 [error] yt-dlp download will not be retried: "ERROR: [youtube] ZWSj0M132e8: Sign in to confirm your age. This video may be inappropriate for some users. Use --cookies-from-browser or --cookies for the authentication. See https://github.com/yt-dlp/yt-dlp/wiki/FAQ#how-do-i-pass-cookies-to-yt-dlp for how to manually pass cookies. Also see https://github.com/yt-dlp/yt-dlp/wiki/Extractors#exporting-youtube-cookies for tips on effectively exporting YouTube cookies\n" 14:04:09.527 [info] {"args":{"id":8401},"id":203066,"meta":{},"state":"success","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":10641188,"event":"job:stop","queue_time":10880790,"attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 14:04:10.230 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=v6jHhzj08yQ --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/39/4d/394dc04fad85f901368ac265a7c89e5bd52365cedb98be3d9aa26231e09b217a.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 1 with: ERROR: [youtube] v6jHhzj08yQ: Sign in to confirm your age. This video may be inappropriate for some users. Use --cookies-from-browser or --cookies for the authentication. See https://github.com/yt-dlp/yt-dlp/wiki/FAQ#how-do-i-pass-cookies-to-yt-dlp for how to manually pass cookies. Also see https://github.com/yt-dlp/yt-dlp/wiki/Extractors#exporting-youtube-cookies for tips on effectively exporting YouTube cookies 14:04:10.230 [error] yt-dlp download error for media item #8418: "ERROR: [youtube] v6jHhzj08yQ: Sign in to confirm your age. This video may be inappropriate for some users. Use --cookies-from-browser or --cookies for the authentication. See https://github.com/yt-dlp/yt-dlp/wiki/FAQ#how-do-i-pass-cookies-to-yt-dlp for how to manually pass cookies. Also see https://github.com/yt-dlp/yt-dlp/wiki/Extractors#exporting-youtube-cookies for tips on effectively exporting YouTube cookies\n" 14:04:10.230 [error] yt-dlp download will not be retried: "ERROR: [youtube] v6jHhzj08yQ: Sign in to confirm your age. This video may be inappropriate for some users. Use --cookies-from-browser or --cookies for the authentication. See https://github.com/yt-dlp/yt-dlp/wiki/FAQ#how-do-i-pass-cookies-to-yt-dlp for how to manually pass cookies. Also see https://github.com/yt-dlp/yt-dlp/wiki/Extractors#exporting-youtube-cookies for tips on effectively exporting YouTube cookies\n" 14:04:10.232 [info] {"args":{"id":8418},"id":203067,"meta":{},"state":"success","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":10936070,"event":"job:stop","queue_time":11290827,"attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 14:04:12.930 [info] {"source":"oban","duration":4364,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:04:17.752 [info] GET /sources/17/media/40995/force_download 14:04:17.753 [debug] QUERY OK source="settings" db=0.3ms idle=1374.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:04:17.754 [debug] QUERY OK source="settings" db=0.7ms idle=783.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:04:17.754 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 14:04:17.755 [error] #PID<0.10933.0> running PinchflatWeb.Endpoint (connection #PID<0.10932.0>, stream id 1) terminated Server: pinchflat.uiau7e.uncld.dev:80 (http) Request: GET /sources/17/media/40995/force_download ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/17/media/40995/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.10932.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/17/media/40995/force_download", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 49468}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYLWY5X0g2ZDNMbWs2M0U0WWhlbE5BSzVh.NGdLst4yzg5Vu2T5f0jhr6PDPsleEG4hfO1Hl_dny5w", "from" => "gptbot(at)openai.com", "host" => "pinchflat.uiau7e.uncld.dev", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.3; +https://openai.com/gptbot)", "via" => "2.0 Caddy", "x-forwarded-for" => "74.7.227.183", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https", "x-openai-host-hash" => "454925582" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{ "_pinchflat_key" => "SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYLWY5X0g2ZDNMbWs2M0U0WWhlbE5BSzVh.NGdLst4yzg5Vu2T5f0jhr6PDPsleEG4hfO1Hl_dny5w" }, halted: false, host: "pinchflat.uiau7e.uncld.dev", method: "GET", owner: #PID<0.10933.0>, params: %{}, path_info: ["sources", "17", "media", "40995", "force_download"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.uiau7e.uncld.dev", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {10, 210, 0, 2}, req_cookies: %{ "_pinchflat_key" => "SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYLWY5X0g2ZDNMbWs2M0U0WWhlbE5BSzVh.NGdLst4yzg5Vu2T5f0jhr6PDPsleEG4hfO1Hl_dny5w" }, req_headers: [ {"accept", "*/*"}, {"accept-encoding", "gzip, br, deflate"}, {"cookie", "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYLWY5X0g2ZDNMbWs2M0U0WWhlbE5BSzVh.NGdLst4yzg5Vu2T5f0jhr6PDPsleEG4hfO1Hl_dny5w"}, {"from", "gptbot(at)openai.com"}, {"host", "pinchflat.uiau7e.uncld.dev"}, {"user-agent", "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.3; +https://openai.com/gptbot)"}, {"via", "2.0 Caddy"}, {"x-forwarded-for", "74.7.227.183"}, {"x-forwarded-host", "pinchflat.uiau7e.uncld.dev"}, {"x-forwarded-proto", "https"}, {"x-openai-host-hash", "454925582"} ], request_path: "/sources/17/media/40995/force_download", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GIcZiaYFN7ge9osAAOUi"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.10932.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/17/media/40995/force_download", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 49468}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYLWY5X0g2ZDNMbWs2M0U0WWhlbE5BSzVh.NGdLst4yzg5Vu2T5f0jhr6PDPsleEG4hfO1Hl_dny5w", "from" => "gptbot(at)openai.com", "host" => "pinchflat.uiau7e.uncld.dev", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.3; +https://openai.com/gptbot)", "via" => "2.0 Caddy", "x-forwarded-for" => "74.7.227.183", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https", "x-openai-host-hash" => "454925582" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/17/media/40995/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.10932.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/17/media/40995/force_download", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 49468}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYLWY5X0g2ZDNMbWs2M0U0WWhlbE5BSzVh.NGdLst4yzg5Vu2T5f0jhr6PDPsleEG4hfO1Hl_dny5w", "from" => "gptbot(at)openai.com", "host" => "pinchflat.uiau7e.uncld.dev", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.3; +https://openai.com/gptbot)", "via" => "2.0 Caddy", "x-forwarded-for" => "74.7.227.183", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https", "x-openai-host-hash" => "454925582" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{ " (truncated) 14:04:38.030 [info] {"args":{"id":3},"id":203046,"meta":{},"system_time":1767409478030077437,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 14:04:38.031 [debug] QUERY OK source="sources" db=0.4ms idle=651.6ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [3] 14:04:38.031 [debug] QUERY OK source="settings" db=0.3ms idle=652.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:04:38.032 [debug] QUERY OK source="media_profiles" db=0.3ms queue=0.1ms idle=652.9ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 14:04:38.033 [debug] QUERY OK source="settings" db=0.2ms idle=9.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:04:38.033 [debug] Fetching recent media IDs from YouTube API for playlist: UUISrVZmDM4x-Rq9mmNUw7Zw 14:04:38.033 [debug] QUERY OK source="settings" db=0.1ms idle=3.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:04:38.033 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 14:04:38.430 [debug] QUERY OK source="media_items" db=4.7ms idle=394.6ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND m0."media_id" IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [3, "CtF5dLHITYA", "SGJkxRdkRGg", "OUCt85aJaAA", "9gARPYZOka4", "-uH-Gi5tjEw", "qwUBBQKYX94", "s8VLDSQJ8nA", "EvPfr0lKkh4", "msXzAxF49gA", "hQCWaSvjkU0", "RcmjVsy3a-g", "xtuNc9vYJG4", "fj2tcg8OzsM", "2FZ4IfPACDM", "2Q9DzW20YJ8", "IVsWFGOE_mw", "vPxpMcv2Z4Y", "Zverj_ldlhY", "pQK8xasPd9Q", "_Yo7nh8u9pk", "4HzltsOvc0A", "a8UBLMm71JY", "3vqbr7-6Twk", "Df0iVjAKJZw", "n-X-AJpHUyI", "4CV7jI0e0Hw", "nqPoocCKci8", "5IIOdWnJGxg", "jkPL8BaM4ko", "CzeQtnRmUZ0", "9u-0d2IVZ3I", "igtvNmqsKM0", "47XDpW4nOzk", "8xvd7xSLQOo", "PnQPZMN0kIY", "feDph2WgRfI", "Z5FZ2XfX4Uc", "e0DxPopyrqM", "YvaK-Tjp2ck", "6_CctUPWX4I", "_DzHKw8yK58", "VnAkeiehyCg", "EFW1iCguDV8", "CEj7B1VzUwU", "3cy5fWUssjQ", "ZnjoTYmqLhs", "5IxtizzvaWw", "ZnBsMRl-EL0", "ET-M3T8E0PU", ...] 14:04:38.438 [debug] QUERY OK source="media_items" db=6.5ms idle=400.4ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [3] 14:04:38.442 [debug] QUERY OK source="tasks" db=0.9ms idle=408.3ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [203070, 3, ~U[2026-01-03 03:04:38Z], ~U[2026-01-03 03:04:38Z]] 14:04:38.443 [info] {"args":{"id":3},"id":203046,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":412846,"event":"job:stop","queue_time":583543,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 14:04:42.299 [info] GET /sources/11/media/58590/force_download 14:04:42.300 [debug] QUERY OK source="settings" db=0.6ms idle=1921.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:04:42.301 [debug] QUERY OK source="settings" db=0.4ms idle=1922.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:04:42.301 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 14:04:42.302 [error] #PID<0.10939.0> running PinchflatWeb.Endpoint (connection #PID<0.10938.0>, stream id 1) terminated Server: pinchflat.uiau7e.uncld.dev:80 (http) Request: GET /sources/11/media/58590/force_download ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/11/media/58590/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.10938.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/11/media/58590/force_download", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 51550}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYLWY5X0g2ZDNMbWs2M0U0WWhlbE5BSzVh.NGdLst4yzg5Vu2T5f0jhr6PDPsleEG4hfO1Hl_dny5w", "from" => "gptbot(at)openai.com", "host" => "pinchflat.uiau7e.uncld.dev", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.3; +https://openai.com/gptbot)", "via" => "2.0 Caddy", "x-forwarded-for" => "74.7.227.183", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https", "x-openai-host-hash" => "454925582" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{ "_pinchflat_key" => "SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYLWY5X0g2ZDNMbWs2M0U0WWhlbE5BSzVh.NGdLst4yzg5Vu2T5f0jhr6PDPsleEG4hfO1Hl_dny5w" }, halted: false, host: "pinchflat.uiau7e.uncld.dev", method: "GET", owner: #PID<0.10939.0>, params: %{}, path_info: ["sources", "11", "media", "58590", "force_download"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.uiau7e.uncld.dev", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {10, 210, 0, 2}, req_cookies: %{ "_pinchflat_key" => "SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYLWY5X0g2ZDNMbWs2M0U0WWhlbE5BSzVh.NGdLst4yzg5Vu2T5f0jhr6PDPsleEG4hfO1Hl_dny5w" }, req_headers: [ {"accept", "*/*"}, {"accept-encoding", "gzip, br, deflate"}, {"cookie", "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYLWY5X0g2ZDNMbWs2M0U0WWhlbE5BSzVh.NGdLst4yzg5Vu2T5f0jhr6PDPsleEG4hfO1Hl_dny5w"}, {"from", "gptbot(at)openai.com"}, {"host", "pinchflat.uiau7e.uncld.dev"}, {"user-agent", "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.3; +https://openai.com/gptbot)"}, {"via", "2.0 Caddy"}, {"x-forwarded-for", "74.7.227.183"}, {"x-forwarded-host", "pinchflat.uiau7e.uncld.dev"}, {"x-forwarded-proto", "https"}, {"x-openai-host-hash", "454925582"} ], request_path: "/sources/11/media/58590/force_download", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GIcZj10jOztx5pYAAgmh"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.10938.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/11/media/58590/force_download", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 51550}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYLWY5X0g2ZDNMbWs2M0U0WWhlbE5BSzVh.NGdLst4yzg5Vu2T5f0jhr6PDPsleEG4hfO1Hl_dny5w", "from" => "gptbot(at)openai.com", "host" => "pinchflat.uiau7e.uncld.dev", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.3; +https://openai.com/gptbot)", "via" => "2.0 Caddy", "x-forwarded-for" => "74.7.227.183", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https", "x-openai-host-hash" => "454925582" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/11/media/58590/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.10938.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/11/media/58590/force_download", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 51550}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYLWY5X0g2ZDNMbWs2M0U0WWhlbE5BSzVh.NGdLst4yzg5Vu2T5f0jhr6PDPsleEG4hfO1Hl_dny5w", "from" => "gptbot(at)openai.com", "host" => "pinchflat.uiau7e.uncld.dev", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.3; +https://openai.com/gptbot)", "via" => "2.0 Caddy", "x-forwarded-for" => "74.7.227.183", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https", "x-openai-host-hash" => "454925582" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{ " (truncated) 14:04:42.935 [info] {"source":"oban","duration":3728,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:04:52.074 [info] {"args":{"id":1},"id":203047,"meta":{},"system_time":1767409492074008246,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 14:04:52.075 [debug] QUERY OK source="sources" db=0.7ms queue=0.1ms idle=1695.4ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 14:04:52.076 [debug] QUERY OK source="settings" db=0.5ms queue=0.2ms idle=1015.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:04:52.077 [debug] QUERY OK source="media_profiles" db=0.6ms queue=0.1ms idle=697.8ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 14:04:52.078 [debug] QUERY OK source="settings" db=0.4ms queue=0.1ms idle=12.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:04:52.078 [debug] Fetching recent media IDs from YouTube API for playlist: UU54SLBnD5k5U3Q6N__UjbAw 14:04:52.079 [debug] QUERY OK source="settings" db=0.3ms queue=0.1ms idle=5.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:04:52.079 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 14:04:52.463 [debug] QUERY OK source="media_items" db=4.3ms idle=383.5ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND m0."media_id" IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [1, "UYCKIroDVBY", "ynOiaE9f6NY", "At_WjGosTNM", "_s7ZzdPoVZE", "ulhKFEKXIEI", "YpQ2jupcrHk", "PetMnG6cCDw", "VdxlXCnA1DM", "uj2s7HZQigU", "rZ7Y_gPAHig", "LTmK8Ab6IFE", "sZKNVGI8xt0", "_PUZIf6VQto", "J2-1ZErtS7A", "OEyptSEM5Tw", "HLeY2_hJvRk", "DkZ5uXcDxjc", "zPWe_aBuNfM", "PZN18led4ok", "66F09ebI9gw", "Pfok4B_xyaI", "e5HEGCCadBU", "hYFsHfPquPg", "nKsnfEB29ek", "OpDh_O473Ms", "ZTtZ12XtQpg", "TphXloX3PEI", "4Qhp4VPP2Wo", "J5l7jvbp3u8", "uL_YQMkkbUg", "SAZ17l0EwxI", "fTa_T2pVwuk", "6HpTVfX0SvI", "XlIWsRyXL8U", "nM1GQNJU6LQ", "WVN1LNy1zgo", "0Fxf6_q7qHc", "dL0KPsy-Dww", "G43wJ7YyWzM", "yVy89TnL9Zg", "BR1VRJDu-gc", "-2HeoqiMC6s", "7WXyx51z5G8", "jCk-9S8PQyc", "vGEIHv1XelY", "rOI7HYGGHpo", "gNeGHhU6UaI", "gUlkwSHOT7Q", "tpf7TxliCxA", ...] 14:04:52.471 [debug] QUERY OK source="media_items" db=5.7ms idle=389.2ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [1] 14:04:52.474 [debug] QUERY OK source="tasks" db=0.4ms idle=394.0ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [203071, 1, ~U[2026-01-03 03:04:52Z], ~U[2026-01-03 03:04:52Z]] 14:04:52.474 [info] {"args":{"id":1},"id":203047,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":400115,"event":"job:stop","queue_time":421491,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 14:04:54.080 [info] {"args":{"id":22},"id":203048,"meta":{},"system_time":1767409494080186368,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 14:04:54.081 [debug] QUERY OK source="sources" db=0.4ms queue=0.1ms idle=1605.9ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [22] 14:04:54.082 [debug] QUERY OK source="settings" db=0.3ms queue=0.1ms idle=1599.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:04:54.083 [debug] QUERY OK source="media_profiles" db=0.3ms idle=1013.3ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 14:04:54.083 [debug] QUERY OK source="settings" db=0.3ms queue=0.1ms idle=9.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:04:54.083 [debug] Fetching recent media IDs from YouTube API for playlist: UUP1RHyOhO98Yn2rMbDBirxA 14:04:54.084 [debug] QUERY OK source="settings" db=0.2ms queue=0.2ms idle=4.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:04:54.085 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 14:04:54.403 [debug] QUERY OK source="media_items" db=1.3ms idle=320.3ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND m0."media_id" IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [22, "N5RzDzO54gQ", "5glegyagphQ", "VtiV_RfFqNM", "qNYyH7bMcbI", "MPdiQsg_zQ8", "4-VOc2Aich8", "gMrBK9rp6As", "p0lqYk8_uMI", "aKpQHxUiwxc", "KsuhL0zVo3I", "pCJcoGDsbxc", "_5AR-GKeqlk", "VcJG7rIOjb0", "vRzAE_0VnXQ", "uj_bcWLWMtw", "xRyiudwo_jM", "pTMRT4CRUoM", "W8_LEBSOsPg", "YZuP7d99kCw"] 14:04:54.405 [debug] QUERY OK source="settings" db=0.2ms idle=322.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:04:54.405 [debug] QUERY OK source="settings" db=0.3ms idle=322.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:04:54.406 [debug] Running yt-dlp command for action: get_media_attributes 14:04:54.408 [debug] QUERY OK source="settings" db=0.4ms idle=324.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:04:54.409 [debug] QUERY OK source="settings" db=0.4ms queue=0.1ms idle=324.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:04:54.410 [debug] QUERY OK source="settings" db=0.5ms idle=6.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:04:54.410 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=gMrBK9rp6As --simulate --skip-download --output /downloads/White Raven/Season %(upload_date>%Y)S/s%(upload_date>%Y)Se%(upload_date>%m%d)S00 - %(title)S.%(ext)S --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --print-to-file %(.{id,title,live_status,original_url,description,aspect_ratio,duration,upload_date,timestamp,playlist_index,filename})j /tmp/pinchflat/data/c7/3c/c73c70ae70d2dafa2c8164834d8830de90a4e6a127c644ed222112af5099d41e.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:04:58.906 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=gMrBK9rp6As --simulate --skip-download --output /downloads/White Raven/Season %(upload_date>%Y)S/s%(upload_date>%Y)Se%(upload_date>%m%d)S00 - %(title)S.%(ext)S --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --print-to-file %(.{id,title,live_status,original_url,description,aspect_ratio,duration,upload_date,timestamp,playlist_index,filename})j /tmp/pinchflat/data/c7/3c/c73c70ae70d2dafa2c8164834d8830de90a4e6a127c644ed222112af5099d41e.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 1 with: ERROR: [youtube] gMrBK9rp6As: Offline. 14:04:58.907 [error] Error creating media item 'gMrBK9rp6As' from URL: {:error, "ERROR: [youtube] gMrBK9rp6As: Offline.\n", 1} 14:04:58.908 [debug] QUERY OK source="media_items" db=1.0ms queue=0.1ms idle=819.3ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [22] 14:04:58.912 [debug] QUERY OK source="tasks" db=0.6ms idle=532.3ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [203072, 22, ~U[2026-01-03 03:04:58Z], ~U[2026-01-03 03:04:58Z]] 14:04:58.913 [info] {"args":{"id":22},"id":203048,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":4832247,"event":"job:stop","queue_time":203508,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 14:05:00.220 [info] {"source":"oban","duration":493,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 14:05:12.940 [info] {"source":"oban","duration":3846,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:05:13.142 [info] {"args":{"id":2},"id":203049,"meta":{},"system_time":1767409513142621847,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 14:05:13.143 [debug] QUERY OK source="sources" db=0.7ms idle=764.1ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [2] 14:05:13.144 [debug] QUERY OK source="settings" db=0.6ms idle=765.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:05:13.145 [debug] QUERY OK source="media_profiles" db=0.6ms idle=204.2ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 14:05:13.146 [debug] QUERY OK source="settings" db=0.4ms idle=11.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:05:13.146 [debug] Fetching recent media IDs from YouTube API for playlist: UUeE3lj6pLX_gCd0Yvns517Q 14:05:13.147 [debug] QUERY OK source="settings" db=0.4ms idle=4.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:05:13.147 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 14:05:13.495 [debug] QUERY OK source="media_items" db=4.8ms idle=346.6ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND m0."media_id" IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [2, "0k6I__61QDc", "tAnxIOSrasI", "qGmURDZnDhc", "vBsPoGzQPxA", "TiJoEoREmdE", "C-CkKUyzQhA", "K1UWf6n1FmY", "9VKS1P-aXSc", "kt_SNpPa2w4", "oaXa30IfZMc", "pUBcfLBwPXw", "WkG24B0xw1E", "fBQxlA3KI5U", "HbeqOllBS9o", "li1fOq_qqHM", "rsqGEZeczYw", "d7HFMZOp0S4", "oipxUVJUZrc", "cTxE_oPyD9Q", "yJlKrUX8Bvk", "pYtoIdfLeHA", "qPMGKmyQ1AA", "7W651YDFjhc", "EfUXdMBXauI", "804ky1qeBuE", "DRMng-9g9Ng", "Nzp4LPVF_7M", "1psbOjlzkyA", "IwMM9c9Q0Pw", "xhbzG8V0eSA", "-CSyf5_q-XQ", "C__g4XPdYRY", "7-FRyPsqWG0", "0-fliBPsvZI", "xLZYbjMl3hY", "qs36351JQys", "-aty2xx6kTI", "Ty7NA3HvUsk", "w6xdmHLxzSM", "-5YmR5lvMlQ", "fFbRmFdCoYc", "XkPAB-oXAoU", "rTecGGMrRKc", "tHjU0F1najQ", "Z6otzigVvWM", "9m36Ncgctbg", "B1KUJbbpoK0", "rqGLjKlA_tM", "PZDZuoa3kJE", ...] 14:05:13.515 [debug] QUERY OK source="media_items" db=16.3ms queue=0.1ms idle=354.2ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [2] 14:05:13.520 [debug] QUERY OK source="tasks" db=0.8ms idle=372.1ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [203073, 2, ~U[2026-01-03 03:05:13Z], ~U[2026-01-03 03:05:13Z]] 14:05:13.521 [info] {"args":{"id":2},"id":203049,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":377928,"event":"job:stop","queue_time":533382,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 14:05:42.944 [info] {"source":"oban","duration":2007,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:05:47.944 [info] GET /sources/17/media/10257/force_download 14:05:47.945 [debug] QUERY OK source="settings" db=0.3ms queue=0.1ms idle=1565.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:05:47.946 [debug] QUERY OK source="settings" db=0.3ms queue=0.1ms idle=698.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:05:47.946 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 14:05:47.947 [error] #PID<0.10949.0> running PinchflatWeb.Endpoint (connection #PID<0.10948.0>, stream id 1) terminated Server: pinchflat.uiau7e.uncld.dev:80 (http) Request: GET /sources/17/media/10257/force_download ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/17/media/10257/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.10948.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/17/media/10257/force_download", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 34980}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "from" => "gptbot(at)openai.com", "host" => "pinchflat.uiau7e.uncld.dev", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.3; +https://openai.com/gptbot)", "via" => "2.0 Caddy", "x-forwarded-for" => "74.7.227.183", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https", "x-openai-host-hash" => "454925582" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.uiau7e.uncld.dev", method: "GET", owner: #PID<0.10949.0>, params: %{}, path_info: ["sources", "17", "media", "10257", "force_download"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.uiau7e.uncld.dev", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {10, 210, 0, 2}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"accept-encoding", "gzip, br, deflate"}, {"from", "gptbot(at)openai.com"}, {"host", "pinchflat.uiau7e.uncld.dev"}, {"user-agent", "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.3; +https://openai.com/gptbot)"}, {"via", "2.0 Caddy"}, {"x-forwarded-for", "74.7.227.183"}, {"x-forwarded-host", "pinchflat.uiau7e.uncld.dev"}, {"x-forwarded-proto", "https"}, {"x-openai-host-hash", "454925582"} ], request_path: "/sources/17/media/10257/force_download", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GIcZnqXbfm-zF6kAAgrB"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.10948.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/17/media/10257/force_download", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 34980}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "from" => "gptbot(at)openai.com", "host" => "pinchflat.uiau7e.uncld.dev", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.3; +https://openai.com/gptbot)", "via" => "2.0 Caddy", "x-forwarded-for" => "74.7.227.183", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https", "x-openai-host-hash" => "454925582" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/17/media/10257/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.10948.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/17/media/10257/force_download", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 34980}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "from" => "gptbot(at)openai.com", "host" => "pinchflat.uiau7e.uncld.dev", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.3; +https://openai.com/gptbot)", "via" => "2.0 Caddy", "x-forwarded-for" => "74.7.227.183", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https", "x-openai-host-hash" => "454925582" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.uiau7e.uncld.dev", method: "GET", owner: #PID<0.10949.0>, params: %{}, path_info: ["sources", "17", "media", "10257", "force_download"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.uiau7e.uncld.dev", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {10, 210, 0, 2}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"accept-en (truncated) 14:06:00.221 [info] {"source":"oban","duration":353,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 14:06:09.316 [info] {"args":{"id":26},"id":203050,"meta":{},"system_time":1767409569315719107,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 14:06:09.317 [debug] QUERY OK source="sources" db=0.5ms queue=0.1ms idle=1937.2ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [26] 14:06:09.318 [debug] QUERY OK source="settings" db=0.5ms queue=0.2ms idle=1938.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:06:09.319 [debug] QUERY OK source="media_profiles" db=0.7ms queue=0.1ms idle=1016.6ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 14:06:09.320 [debug] QUERY OK source="settings" db=0.4ms queue=0.1ms idle=12.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:06:09.320 [debug] Fetching recent media IDs from YouTube API for playlist: UU6NY7eg1FxCfAVX58yL0cJw 14:06:09.321 [debug] QUERY OK source="settings" db=0.3ms queue=0.1ms idle=5.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:06:09.321 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 14:06:09.820 [debug] QUERY OK source="media_items" db=5.6ms idle=496.8ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND m0."media_id" IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [26, "o2tiLxanOd0", "3Hkalon06bY", "acwCbVzHnRM", "m3Cddar422Y", "QItYx18RK4M", "iFrwlymvtTM", "CBKzBKWhNmE", "twi0ZP1ZWew", "MChkfGtdrgI", "usOf_0SOPl8", "7CamgxCV_lg", "CYW3qAtbiSg", "hkLPA0MEUFk", "Z9APq63an58", "MA2a2BtDQtE", "a23hasz0yk8", "o4tK4PhiK_c", "2-lUv1_A_KU", "W6GGXQ4xVdg", "TOIuoWmEqxo", "JRXSDo6asDk", "iAodr4mipf0", "12wArTNB9dk", "CFZ0TtEbofU", "RwW6yAVtf6Q", "9RshF2jpgLo", "MV8U7XQUpnY", "G0o-l5G0M4s", "FVOkr5w0O0I", "1IFJive9Bvc", "kuc2kAgYD8M", "jHOE86EMHvA", "CjuPAweX08c", "LH0RNHxukJs", "o6OxlF4vAuw", "Qxfr7h-PzdA", "xU_1w6OSnac", "-6G1TNBxp08", "o-ripoq_oXU", "Uevcwu2GLMs", "BAoXgNQ_wRI", "p4NWPk9B20I", "XKxqsR_4w_I", "BNtAWc-vLX4", "ktw-dS-26Gk", "Idbcu-oVtDs", "JCxqgAhaJj4", "A0vzWxUO5TA", "6M0wfDl0LEI", ...] 14:06:09.833 [debug] QUERY OK source="media_items" db=8.6ms queue=0.1ms idle=506.0ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [26] 14:06:09.838 [debug] QUERY OK source="tasks" db=0.8ms idle=516.4ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [203074, 26, ~U[2026-01-03 03:06:09Z], ~U[2026-01-03 03:06:09Z]] 14:06:09.839 [info] {"args":{"id":26},"id":203050,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":523284,"event":"job:stop","queue_time":568277,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 14:06:12.947 [info] {"source":"oban","duration":2843,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:06:42.951 [info] {"source":"oban","duration":2738,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:06:43.419 [info] {"args":{"id":6},"id":203051,"meta":{},"system_time":1767409603418910494,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 14:06:43.420 [debug] QUERY OK source="sources" db=0.7ms idle=1013.7ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [6] 14:06:43.421 [debug] QUERY OK source="settings" db=0.6ms queue=0.1ms idle=469.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:06:43.422 [debug] QUERY OK source="media_profiles" db=0.6ms idle=42.8ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 14:06:43.424 [debug] QUERY OK source="settings" db=1.3ms queue=0.1ms idle=12.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:06:43.424 [debug] Fetching recent media IDs from YouTube API for playlist: UUg0m_Ah8P_MQbnn77-vYnYw 14:06:43.427 [debug] QUERY OK source="settings" db=0.6ms queue=1.4ms idle=6.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:06:43.427 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 14:06:44.034 [debug] QUERY OK source="media_items" db=3.8ms idle=609.6ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND m0."media_id" IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [6, "9i6Qm3LV89c", "2PC3HH4izX4", "dJLpdoPNdZ8", "lqRHAbkn9bo", "nlYgNjtr904", "uHKLZ8LcCJA", "V3LW3EWUxqE", "XaTvV6zJEXk", "AjnHxtnxMhk", "vuJTLm11QmQ", "vUzRuvCi6lw", "NlxSd2y_gfI", "ivcFXtMGdE8", "m17ugzx_Ab4", "o5QiLKbHeMI", "moqdU9sMrRk", "Yi55tGTEMqQ", "rHliVvnQ5Pg", "nCZSTFM-v9k", "uasm2RENDH4", "musiLNtEyRY", "uSvqlME0IsI", "Yo0hmtg8LNc", "HOFD3h9Up9w", "uibJMXaSB7c", "NGq1EoY_r2I", "IL-UZlbO3zI", "-_txeeBP6dg", "iH7BiZvsczM", "rIKuiZVHfZo", "HRw20b6hb_s", "xOQPha-de4A", "L6IXwj-_X1k", "_7--BDD2pxk", "Xaq53-12iW8", "bfb-ZBwdvpo", "3DLbHio3ivA", "xhpwyar65ms", "UzEr8RISXds", "tHU6PeO4WDs", "2z1AaBGzA1g", "y-t3hyj7Mz8", "5ZUXEQ6d0dM", "pn8GF5HaKZc", "wH3XASrC2DA", "C_oeOAG0G5E", "c8gYHg1lZCg", "cPEXUpZ6CWk", "jST7T0L_k_w", ...] 14:06:44.039 [debug] QUERY OK source="media_items" db=3.9ms idle=614.2ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [6] 14:06:44.044 [debug] QUERY OK source="tasks" db=0.8ms idle=616.0ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [203075, 6, ~U[2026-01-03 03:06:44Z], ~U[2026-01-03 03:06:44Z]] 14:06:44.045 [info] {"args":{"id":6},"id":203051,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":625264,"event":"job:stop","queue_time":489742,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 14:06:49.017 [info] GET /sources/13/media/12730/force_download 14:06:49.018 [debug] QUERY OK source="settings" db=0.3ms queue=0.1ms idle=1639.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:06:49.019 [debug] QUERY OK source="settings" db=0.2ms queue=0.1ms idle=1639.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:06:49.019 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 14:06:49.020 [error] #PID<0.10958.0> running PinchflatWeb.Endpoint (connection #PID<0.10957.0>, stream id 1) terminated Server: pinchflat.uiau7e.uncld.dev:80 (http) Request: GET /sources/13/media/12730/force_download ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/13/media/12730/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.10957.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/13/media/12730/force_download", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 39974}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "from" => "gptbot(at)openai.com", "host" => "pinchflat.uiau7e.uncld.dev", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.3; +https://openai.com/gptbot)", "via" => "2.0 Caddy", "x-forwarded-for" => "74.7.227.183", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https", "x-openai-host-hash" => "454925582" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.uiau7e.uncld.dev", method: "GET", owner: #PID<0.10958.0>, params: %{}, path_info: ["sources", "13", "media", "12730", "force_download"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.uiau7e.uncld.dev", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {10, 210, 0, 2}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"accept-encoding", "gzip, br, deflate"}, {"from", "gptbot(at)openai.com"}, {"host", "pinchflat.uiau7e.uncld.dev"}, {"user-agent", "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.3; +https://openai.com/gptbot)"}, {"via", "2.0 Caddy"}, {"x-forwarded-for", "74.7.227.183"}, {"x-forwarded-host", "pinchflat.uiau7e.uncld.dev"}, {"x-forwarded-proto", "https"}, {"x-openai-host-hash", "454925582"} ], request_path: "/sources/13/media/12730/force_download", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GIcZrN4W-54UcbwAAOZC"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.10957.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/13/media/12730/force_download", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 39974}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "from" => "gptbot(at)openai.com", "host" => "pinchflat.uiau7e.uncld.dev", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.3; +https://openai.com/gptbot)", "via" => "2.0 Caddy", "x-forwarded-for" => "74.7.227.183", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https", "x-openai-host-hash" => "454925582" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/13/media/12730/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.10957.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/13/media/12730/force_download", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 39974}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "from" => "gptbot(at)openai.com", "host" => "pinchflat.uiau7e.uncld.dev", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.3; +https://openai.com/gptbot)", "via" => "2.0 Caddy", "x-forwarded-for" => "74.7.227.183", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https", "x-openai-host-hash" => "454925582" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.uiau7e.uncld.dev", method: "GET", owner: #PID<0.10958.0>, params: %{}, path_info: ["sources", "13", "media", "12730", "force_download"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.uiau7e.uncld.dev", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {10, 210, 0, 2}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"accept-en (truncated) 14:07:00.222 [info] {"source":"oban","duration":246,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 14:07:04.469 [info] {"args":{"id":10},"id":203052,"meta":{},"system_time":1767409624469127102,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 14:07:04.469 [debug] QUERY OK source="sources" db=0.3ms idle=1090.5ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [10] 14:07:04.470 [debug] QUERY OK source="settings" db=0.7ms idle=1011.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:07:04.472 [debug] QUERY OK source="media_profiles" db=0.8ms idle=92.2ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 14:07:04.472 [debug] QUERY OK source="settings" db=0.5ms idle=10.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:07:04.473 [debug] Fetching recent media IDs from YouTube API for playlist: UUmHz7DQbbkcY_UoWY8bBJLw 14:07:04.473 [debug] QUERY OK source="settings" db=0.4ms idle=4.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:07:04.473 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 14:07:04.838 [debug] QUERY OK source="media_items" db=4.6ms idle=363.7ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND m0."media_id" IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [10, "PhjtM9ePmYY", "BYRqpIciNLg", "KKoDQ42Fcpk", "AifAIqHezb8", "sjsS60OTXSQ", "KVouvdlUtGQ", "Th4RJNVZN3Q", "a9Zj-iWYC4w", "Z2_oFD9DMd0", "OW9WywZF_d4", "hFSwWzxrqUA", "XsPrNwyLDJM", "9NUcKPnPMEw", "GvP1jo9RstE", "8jul3DEwgMY", "e4K0Co-JeKQ", "wxoYf3KBlis", "YFQm8Hk73ug", "iu5rnQkfO6M", "RESslu3Bhuk", "vn9VDbacUgQ", "mLozqDnhqpQ", "GWXCCBsOMSg", "OXIpbrvFxfE", "hbZb1Q0mM7k", "lj2JTO1L1Tc", "dGjMw1SkmjU", "vBQFfmlTK_4", "91WqepC8kS0", "UUZfxQhKmfA", "aPsq5nqvhxg", "AJ7atBkisOU", "2fZ0nkP5dfo", "qKZXQGCLRJY", "F26dxTMmW10", "cYPuhhATDXc", "uLrOyIpjkZ8", "kDu56nXRqGQ", "I4lBTlClwww", "h23xksD0dN0", "SgameZUfeGo", "NPgbgiRJCxA", "-v88e4T8i_E", "HkgV_-nJOuE", "3h1vM0lIrpM", "gjExqY_iB38", "5ScP_aPBEiQ", "t5CkW-CKTZs", "gKKRYcy4BbU", ...] 14:07:04.843 [debug] QUERY OK source="settings" db=0.5ms queue=0.1ms idle=371.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:07:04.844 [debug] QUERY OK source="settings" db=0.6ms queue=0.1ms idle=371.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:07:04.844 [debug] Running yt-dlp command for action: get_media_attributes 14:07:04.847 [debug] QUERY OK source="settings" db=0.3ms idle=373.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:07:04.848 [debug] QUERY OK source="settings" db=0.3ms idle=373.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:07:04.848 [debug] QUERY OK source="settings" db=0.3ms idle=9.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:07:04.848 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=Z2_oFD9DMd0 --simulate --skip-download --output /downloads/Switch Angel/Season %(upload_date>%Y)S/s%(upload_date>%Y)Se%(upload_date>%m%d)S00 - %(title)S.%(ext)S --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --print-to-file %(.{id,title,live_status,original_url,description,aspect_ratio,duration,upload_date,timestamp,playlist_index,filename})j /tmp/pinchflat/data/8c/a8/8ca87cac4404dfa9a6a2903efad3568d2c74910b7ca7cf1a01a4f26843b33e8b.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:07:07.482 [info] {"args":{"id":9},"id":203053,"meta":{},"system_time":1767409627481768871,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 14:07:07.483 [debug] QUERY OK source="sources" db=0.8ms queue=0.2ms idle=1103.6ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [9] 14:07:07.485 [debug] QUERY OK source="settings" db=0.9ms queue=0.1ms idle=1105.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:07:07.487 [debug] QUERY OK source="media_profiles" db=1.0ms queue=0.1ms idle=1017.3ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 14:07:07.488 [debug] QUERY OK source="settings" db=0.5ms queue=0.1ms idle=14.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:07:07.488 [debug] Fetching recent media IDs from YouTube API for playlist: UUy0Pr5u-MwGXXzp_GDd4m_g 14:07:07.489 [debug] QUERY OK source="settings" db=0.5ms queue=0.1ms idle=6.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:07:07.489 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 14:07:07.897 [debug] QUERY OK source="media_items" db=4.5ms queue=0.1ms idle=409.0ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND m0."media_id" IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [9, "97DBlIPSMkI", "V7Q9VnfzRqE", "Nub2m3iioSw", "Tpk6NNZubqU", "L4Eh-MtBFFk", "sa8p75KJqOc", "2gpPC0vsry0", "B2l4YfAav6M", "iL1qKxcaZnU", "NH5AAcLn03o", "8fOaCUvVQpY", "8aQ7sJ9EyaY", "ld0ngHU3YQ0", "uKzsA5kc8jw", "_A1dxw_T6dw", "TFVA0Bc5ajA", "IgFSOa0RBxs", "fGAe2cenBhs", "a6_0p8e42Y4", "vnR7jnJYN-k", "db6_ragog48", "SMKDYoXrZzw", "-fM_uGwlRlU", "kRxJ2g3T0zs", "GgU7L-z0kbA", "yFZJ6Qb8mDY", "YkyTbtgcfJU", "k01ARI01oMU", "ToFKhGfGgc0", "MU8JlJIuwh4", "IY36QIh6VG8", "brtcZFHW0P4", "A39Glu9I9fk", "Ib_1jixUkLw", "c9UIDwF7oS4", "CcSE-YHRJP4", "Tpmb_mTKuhs", "yNbz6f5dMLE", "BAVQcOWZi-Y", "Fa7RxeYNUTw", "teIoBQdGT5s", "UqykI_3CT-g", "vBeWkDTK6Eg", "qOp_nyKqmic", "fEqSlPpXHYk", "lII4lxNpPVg", "BaxD8BI3wI4", "me_afppRbyI", "C69B2k3fAvs", ...] 14:07:07.908 [debug] QUERY OK source="media_items" db=6.4ms idle=416.9ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [9] 14:07:07.914 [debug] QUERY OK source="tasks" db=0.9ms idle=424.1ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [203076, 9, ~U[2026-01-03 03:07:07Z], ~U[2026-01-03 03:07:07Z]] 14:07:07.916 [info] {"args":{"id":9},"id":203053,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":432772,"event":"job:stop","queue_time":562592,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 14:07:09.281 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=Z2_oFD9DMd0 --simulate --skip-download --output /downloads/Switch Angel/Season %(upload_date>%Y)S/s%(upload_date>%Y)Se%(upload_date>%m%d)S00 - %(title)S.%(ext)S --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --print-to-file %(.{id,title,live_status,original_url,description,aspect_ratio,duration,upload_date,timestamp,playlist_index,filename})j /tmp/pinchflat/data/8c/a8/8ca87cac4404dfa9a6a2903efad3568d2c74910b7ca7cf1a01a4f26843b33e8b.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 1 with: ERROR: [youtube] Z2_oFD9DMd0: This live event will begin in a few moments. 14:07:09.281 [error] Error creating media item 'Z2_oFD9DMd0' from URL: {:error, "ERROR: [youtube] Z2_oFD9DMd0: This live event will begin in a few moments.\n", 1} 14:07:09.284 [debug] QUERY OK source="media_items" db=2.4ms idle=1369.0ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [10] 14:07:09.288 [debug] QUERY OK source="tasks" db=0.7ms idle=1363.3ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [203077, 10, ~U[2026-01-03 03:07:09Z], ~U[2026-01-03 03:07:09Z]] 14:07:09.289 [info] {"args":{"id":10},"id":203052,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":4819718,"event":"job:stop","queue_time":262525,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 14:07:12.957 [info] {"source":"oban","duration":4300,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:07:24.529 [info] {"args":{"id":11},"id":203054,"meta":{},"system_time":1767409644528962962,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 14:07:24.530 [debug] QUERY OK source="sources" db=0.4ms queue=0.1ms idle=150.2ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [11] 14:07:24.531 [debug] QUERY OK source="settings" db=0.3ms queue=0.1ms idle=151.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:07:24.531 [debug] QUERY OK source="media_profiles" db=0.4ms idle=151.9ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 14:07:24.532 [debug] QUERY OK source="settings" db=0.4ms queue=0.3ms idle=10.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:07:24.533 [debug] Fetching recent media IDs from YouTube API for playlist: UUJ901NqoRaXMnIm7aOjLyuA 14:07:24.534 [debug] QUERY OK source="settings" db=0.2ms queue=0.1ms idle=4.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:07:24.534 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 14:07:25.083 [debug] QUERY OK source="media_items" db=2.9ms idle=549.6ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND m0."media_id" IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [11, "1ji7g8qZJ_4", "xP5WmZg7OMg", "HBoV87Jndh8", "-zpzRklxMEo", "9AX85j6Lp4M", "p2U9d4FWDaI", "hfT6XVSa2xE", "qBOKYwe8NzA", "Cf5jL5JNq7k", "bAV0y2acB9c", "XE6JvrChQ_Q", "Efv456Ks9ms", "qgiJ4C5s46U", "KaVC_mTFqHk", "M6gat-hai0I", "_xwFJzOtQv0", "Ao-M_YvfhXY", "SKHWQwf0ago", "gmuFtWZG3v8", "H4oeJ87TMt4", "rS2fDo6mhS8", "aOF6Pe_bTeI", "x8B3Z91qkoE", "fVvYTWAHoBQ", "8r6xqWTqcPQ", "k677A--BwGE", "CSTtrz8t1eg", "w6Ej3Iim4Ic", "jO8S8_KX6p0", "tslsVdOjWFM", "dckL2BCDYmQ", "E3N8_pRRtGM", "qeOEDUgy5xA", "MIPvNqPwMxc", "V2GelRPp5fg", "jWH5H6Y6T-A", "1ObIAwtqt9k", "yVdv1xVggZ4", "Pxpz4211gMI", "UEUAHI0AZu4", "gitCR-iTofw", "eTg2rHYqUZc", "QnOIm4U7Dzs", "RYNFRbP4OWQ", "R3kNCz120XM", "vMflt2fJZYw", "4DkhBa_L_4E", "4IqFTPw6Mzk", "AepfCktyPLk", ...] 14:07:25.092 [debug] QUERY OK source="media_items" db=5.6ms idle=555.6ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [11] 14:07:25.099 [debug] QUERY OK source="tasks" db=0.6ms idle=15.7ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [203078, 11, ~U[2026-01-03 03:07:25Z], ~U[2026-01-03 03:07:25Z]] 14:07:25.100 [info] {"args":{"id":11},"id":203054,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":570607,"event":"job:stop","queue_time":564174,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 14:07:42.964 [info] {"source":"oban","duration":6099,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:07:54.611 [info] GET /sources/17/media/56518/force_download 14:07:54.612 [debug] QUERY OK source="settings" db=0.5ms idle=233.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:07:54.613 [debug] QUERY OK source="settings" db=0.8ms idle=233.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:07:54.613 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 14:07:54.614 [error] #PID<0.10968.0> running PinchflatWeb.Endpoint (connection #PID<0.10967.0>, stream id 1) terminated Server: pinchflat.uiau7e.uncld.dev:80 (http) Request: GET /sources/17/media/56518/force_download ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/17/media/56518/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.10967.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/17/media/56518/force_download", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 47770}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "from" => "gptbot(at)openai.com", "host" => "pinchflat.uiau7e.uncld.dev", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.3; +https://openai.com/gptbot)", "via" => "2.0 Caddy", "x-forwarded-for" => "74.7.227.183", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https", "x-openai-host-hash" => "454925582" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.uiau7e.uncld.dev", method: "GET", owner: #PID<0.10968.0>, params: %{}, path_info: ["sources", "17", "media", "56518", "force_download"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.uiau7e.uncld.dev", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {10, 210, 0, 2}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"accept-encoding", "gzip, br, deflate"}, {"from", "gptbot(at)openai.com"}, {"host", "pinchflat.uiau7e.uncld.dev"}, {"user-agent", "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.3; +https://openai.com/gptbot)"}, {"via", "2.0 Caddy"}, {"x-forwarded-for", "74.7.227.183"}, {"x-forwarded-host", "pinchflat.uiau7e.uncld.dev"}, {"x-forwarded-proto", "https"}, {"x-openai-host-hash", "454925582"} ], request_path: "/sources/17/media/56518/force_download", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GIcZvCPORhkh_eAAAgvh"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.10967.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/17/media/56518/force_download", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 47770}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "from" => "gptbot(at)openai.com", "host" => "pinchflat.uiau7e.uncld.dev", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.3; +https://openai.com/gptbot)", "via" => "2.0 Caddy", "x-forwarded-for" => "74.7.227.183", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https", "x-openai-host-hash" => "454925582" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/17/media/56518/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.10967.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/17/media/56518/force_download", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 47770}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "from" => "gptbot(at)openai.com", "host" => "pinchflat.uiau7e.uncld.dev", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.3; +https://openai.com/gptbot)", "via" => "2.0 Caddy", "x-forwarded-for" => "74.7.227.183", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https", "x-openai-host-hash" => "454925582" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.uiau7e.uncld.dev", method: "GET", owner: #PID<0.10968.0>, params: %{}, path_info: ["sources", "17", "media", "56518", "force_download"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.uiau7e.uncld.dev", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {10, 210, 0, 2}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"accept-en (truncated) 14:08:00.224 [info] {"source":"oban","duration":985,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 14:08:03.652 [info] {"args":{"id":15},"id":203055,"meta":{},"system_time":1767409683651762358,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 14:08:03.653 [debug] QUERY OK source="sources" db=0.3ms idle=1273.4ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [15] 14:08:03.654 [debug] QUERY OK source="settings" db=0.3ms idle=1013.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:08:03.654 [debug] QUERY OK source="media_profiles" db=0.3ms queue=0.1ms idle=275.0ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 14:08:03.655 [debug] QUERY OK source="settings" db=0.2ms queue=0.1ms idle=11.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:08:03.655 [debug] Fetching recent media IDs from YouTube API for playlist: UU5qRAYQmCLx8hFGIiTWSQvA 14:08:03.656 [debug] QUERY OK source="settings" db=0.3ms idle=4.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:08:03.656 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 14:08:04.102 [debug] QUERY OK source="media_items" db=3.5ms queue=0.1ms idle=444.7ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND m0."media_id" IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [15, "EMmIdkwn6a4", "EBT3EIoJpDc", "P2j2jM33fbk", "KuYhCywx8JM", "EteM8YNAFu8", "-KN9sfrroJA", "35D6yzUQM8I", "pIqvmN8ePkc", "rR5RqL2cjPE", "B2mmx85ZIsE", "b-jTeTJ1ekk", "Qa4dYWqfgmg", "TZZgrQEsl4c", "hMFEigXIhgA", "yf8ozrYeFEk", "QoCmQRZKU_c", "Qa9rFTiItTE", "Kxw9tq49VBM", "aLj4QgEf7gQ", "-D7c5td5vhw", "UNJUpex0blc", "Afa2PJq3okY", "r9A1srY7LdU", "m6YZoOWrLlk", "RKSlnQcuZt4", "qEjkDPJmKIo", "fZirHVq8wp0", "jdB56zAMJgE", "F92Oe7JuDtI", "luEgOCX58gw", "9CkNfdQpsuo", "eC3Mv474A8c", "mq6lsIgLLqY", "Wqmn4OTW6Fw", "4yYMQFLVRNc", "TsdMEmH2Lsw", "HQeTYLxz6iY", "V-JtebgnFoM", "2cXS3i36Kh8", "wznCZtGitN8", "2tYVGxZMOiQ", "9bxljq6ljbE", "9hHVjpo_HDA", "w8bqGx4ZtYQ", "yFYGd9irJ5k", "WTfhL2-cT1U", "LCR3ZsqWhuo", "Tj09jojsiaM", "_GZvVqjqlM0", ...] 14:08:04.110 [debug] QUERY OK source="media_items" db=4.0ms idle=452.3ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [15] 14:08:04.114 [debug] QUERY OK source="tasks" db=0.5ms idle=456.9ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [203079, 15, ~U[2026-01-03 03:08:04Z], ~U[2026-01-03 03:08:04Z]] 14:08:04.114 [info] {"args":{"id":15},"id":203055,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":462432,"event":"job:stop","queue_time":514805,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 14:08:08.670 [info] {"args":{"id":18},"id":203056,"meta":{},"system_time":1767409688670634358,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 14:08:08.673 [debug] QUERY OK source="sources" db=0.4ms queue=0.1ms idle=1293.2ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [18] 14:08:08.673 [debug] QUERY OK source="settings" db=0.2ms idle=1294.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:08:08.674 [debug] QUERY OK source="media_profiles" db=0.5ms idle=1016.8ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 14:08:08.676 [debug] QUERY OK source="settings" db=0.6ms queue=0.1ms idle=13.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:08:08.676 [debug] Fetching recent media IDs from YouTube API for playlist: UUuisDAMnvHMYuLFRedMgmVw 14:08:08.677 [debug] QUERY OK source="settings" db=0.2ms queue=0.1ms idle=6.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:08:08.677 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 14:08:09.122 [debug] QUERY OK source="media_items" db=5.1ms idle=443.2ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND m0."media_id" IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [18, "mf2Em7F_qDM", "PjvBtlIGGQU", "EF_PO-pALOQ", "j9eh7huEF4A", "y3FGuwfGzL0", "ZWH_eu9wdUE", "UccWWifa8jA", "0L8xWydKOhk", "CkSloYV3ay4", "SkQ7ywGW2HY", "QM3qu001Xdk", "jOTurZWIEmw", "pojDco-WhA4", "GD19Y1VYBKY", "cvViWSBLu-U", "wXm5ocXv9ho", "uB1Tk9eXQbk", "I7vb-PGArW4", "0h9qvAA5dfQ", "7yx-SecBATo", "oj1ySj7TVJk", "dtTdjRB4Q4g", "mpfcVNb8Mhs", "D3MFnCKv2Mc", "458_RTLWN2E", "W26HiyQ5k1s", "w4NDxPYJs1I", "cxuEV05UN7U", "5cPjR5FVDOw", "nJhbZNSrP4c", "X9Eu7mui35E", "wrgZHIpa6F0", "JEN7jfNqy1A", "v31DYiS2LbY", "iJfD5wWLvuM", "qPVTMbiyPLE", "rM_nvsztYlw", "IoD1j3ZG-SQ", "DDnqxbWvIgQ", "HIhF6C1yc7M", "DlNIxjiqQvs", "JO0-kOXXMEw", "2DihqSsed3w", "uDlvlF5iKz8", "v2jg_5WZ41o", "JekH9K8_SS8", "xVV_6qW_Ho8", "qYOABpvD49s", "VAw8zvyLmfE", ...] 14:08:09.132 [debug] QUERY OK source="media_items" db=7.0ms idle=451.4ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [18] 14:08:09.137 [debug] QUERY OK source="tasks" db=0.8ms idle=459.8ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [203080, 18, ~U[2026-01-03 03:08:09Z], ~U[2026-01-03 03:08:09Z]] 14:08:09.139 [info] {"args":{"id":18},"id":203056,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":467321,"event":"job:stop","queue_time":541178,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 14:08:12.969 [info] {"source":"oban","duration":4124,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:08:19.711 [info] {"args":{"id":16},"id":203057,"meta":{},"system_time":1767409699711611351,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 14:08:19.712 [debug] QUERY OK source="sources" db=0.4ms idle=1332.8ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [16] 14:08:19.713 [debug] QUERY OK source="settings" db=0.3ms idle=1333.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:08:19.713 [debug] QUERY OK source="media_profiles" db=0.3ms idle=1012.5ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 14:08:19.714 [debug] QUERY OK source="settings" db=0.2ms idle=9.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:08:19.714 [debug] Fetching recent media IDs from YouTube API for playlist: UUPPfK7Nq_yQR84rn1wcTXBg 14:08:19.714 [debug] QUERY OK source="settings" db=0.2ms idle=3.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:08:19.714 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 14:08:20.116 [debug] QUERY OK source="media_items" db=5.4ms idle=398.0ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND m0."media_id" IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [16, "BiTNUZ2zONY", "7pVLE7ggkcc", "YAh-xEteBz4", "6hNpMT5OwGo", "vx3oGZYqxm4", "7W_ZSNuS-4w", "CxUC2HXvO84", "RxapAZRYJ6I", "f2ainZL8Tzk", "KJtASaKc95g", "yBCh5cyI0Po", "dg_HQL3GBcY", "ZiVvXPpo0eE", "YO1TnWptv3o", "HwnBnsQBeOA", "CCE2v3oIa74", "OWVPYr9e76Y", "VApJtIyMEec", "XtOIQYVq26o", "gZL1KzV54Cw", "kmU-Eazta1s", "XXthHXEpEP8", "dPw_HkMgYI0", "rxq-TvgNCBU", "SaCbUtTuLhA", "TWLqSk4ZlN0", "p7_rduK5WA0", "lNZ56C-f4a8", "GlK3f1cs_l4", "Yabwyb14-BQ", "WupRwvJ7sOc", "MhpoNL1gZbw", "yUfm6AbtJ0g", "y8zfgIgZ4c0", "gOwjmKMmkV4", "aTiunvocl5c", "KebjX3KEgWQ", "0T2MYXljL5o", "i7sbS92R4cg", "66CDGzjLBtY", "T_W0FWiJmM8", "u_80rUKItGc", "C9_wibbg1Ug", "A4mg1ZUb-7s", "YmUfZt4Ku9s", "DoWsgrlIjYU", "gc5ojxTuwOg", "3AMdPMoGJus", "htYY8VwN-9g", ...] 14:08:20.122 [debug] QUERY OK source="media_items" db=3.7ms idle=404.9ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [16] 14:08:20.125 [debug] QUERY OK source="tasks" db=0.5ms idle=410.4ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [203081, 16, ~U[2026-01-03 03:08:20Z], ~U[2026-01-03 03:08:20Z]] 14:08:20.126 [info] {"args":{"id":16},"id":203057,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":414283,"event":"job:stop","queue_time":518481,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 14:08:42.971 [info] {"source":"oban","duration":1968,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:08:59.421 [info] GET /sources/13/media/58780/force_download 14:08:59.423 [debug] QUERY OK source="settings" db=0.3ms queue=0.1ms idle=1043.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:08:59.424 [debug] QUERY OK source="settings" db=0.3ms queue=0.1ms idle=611.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:08:59.424 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 14:08:59.425 [error] #PID<0.10980.0> running PinchflatWeb.Endpoint (connection #PID<0.10979.0>, stream id 1) terminated Server: pinchflat.uiau7e.uncld.dev:80 (http) Request: GET /sources/13/media/58780/force_download ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/13/media/58780/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.10979.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/13/media/58780/force_download", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 35326}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "from" => "gptbot(at)openai.com", "host" => "pinchflat.uiau7e.uncld.dev", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.3; +https://openai.com/gptbot)", "via" => "2.0 Caddy", "x-forwarded-for" => "74.7.227.183", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https", "x-openai-host-hash" => "454925582" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.uiau7e.uncld.dev", method: "GET", owner: #PID<0.10980.0>, params: %{}, path_info: ["sources", "13", "media", "58780", "force_download"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.uiau7e.uncld.dev", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {10, 210, 0, 2}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"accept-encoding", "gzip, br, deflate"}, {"from", "gptbot(at)openai.com"}, {"host", "pinchflat.uiau7e.uncld.dev"}, {"user-agent", "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.3; +https://openai.com/gptbot)"}, {"via", "2.0 Caddy"}, {"x-forwarded-for", "74.7.227.183"}, {"x-forwarded-host", "pinchflat.uiau7e.uncld.dev"}, {"x-forwarded-proto", "https"}, {"x-openai-host-hash", "454925582"} ], request_path: "/sources/13/media/58780/force_download", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GIcZyzrLlkSCJoQAAOfC"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.10979.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/13/media/58780/force_download", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 35326}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "from" => "gptbot(at)openai.com", "host" => "pinchflat.uiau7e.uncld.dev", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.3; +https://openai.com/gptbot)", "via" => "2.0 Caddy", "x-forwarded-for" => "74.7.227.183", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https", "x-openai-host-hash" => "454925582" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/13/media/58780/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.10979.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/13/media/58780/force_download", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 35326}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "from" => "gptbot(at)openai.com", "host" => "pinchflat.uiau7e.uncld.dev", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.3; +https://openai.com/gptbot)", "via" => "2.0 Caddy", "x-forwarded-for" => "74.7.227.183", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https", "x-openai-host-hash" => "454925582" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.uiau7e.uncld.dev", method: "GET", owner: #PID<0.10980.0>, params: %{}, path_info: ["sources", "13", "media", "58780", "force_download"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.uiau7e.uncld.dev", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {10, 210, 0, 2}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"accept-en (truncated) 14:09:00.225 [info] {"source":"oban","duration":459,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 14:09:12.975 [info] {"source":"oban","duration":2267,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:09:21.890 [info] {"args":{"id":20},"id":203058,"meta":{},"system_time":1767409761890552483,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 14:09:21.891 [debug] QUERY OK source="sources" db=0.6ms idle=512.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [20] 14:09:21.892 [debug] QUERY OK source="settings" db=0.2ms idle=513.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:09:21.893 [debug] QUERY OK source="media_profiles" db=0.3ms idle=513.6ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 14:09:21.893 [debug] QUERY OK source="settings" db=0.2ms idle=11.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:09:21.893 [debug] Fetching recent media IDs from YouTube API for playlist: UU3HjB3X8jeENm46HCkI0Inw 14:09:21.894 [debug] QUERY OK source="settings" db=0.2ms idle=3.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:09:21.894 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 14:09:22.340 [debug] QUERY OK source="media_items" db=2.4ms idle=446.3ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND m0."media_id" IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [20, "CISwNCR8EXc", "EiIJqc5mV90", "8xJUjtnu72E", "Whh2rDVxvYg", "VybtaBZZqCg", "fuIOAraiRAY", "Ri4qqynMLHk", "xglNhNm95KQ", "5hEq1j_TsEY", "9f5iUsFWqoo", "0SXIhVupLZY", "3gAJpHP3yg4", "8zlnEbQgP74", "EnTFdexbFrM", "P3AU8vUwvAs", "4dQvS_n0uy4", "T5CRSwoP5_w", "cd8IcmBLpXc", "L4nAcT3QYkA", "5gskEcRE1uo", "1xywnh3DqFQ", "fXeqjU4tHqo", "YBMxdPCG_PY", "GB5_4JUB9hc", "EtAUdnvt0kc", "y-5D2HhLbso", "q8kP0pRFRMc", "8mQkTPoWfPo", "U5I92UivGzU", "UoMTKhqTf1U", "oIvzxlDViTo", "kCnh99-yZIs", "orABz0cfQZY", "VKt2PXkavyU", "kYwyB7o7BJs", "UB1FC4Nim1Y", "kN_eMzoJJmA", "4hdpejFLkPc", "ArSlY77uV1w", "2me_AlMFJh8", "OlKsICCPadE", "SjpJZ66rGaU", "iRZp_9irH2g", "CN9qeuO04A4", "BUnuun2sL-8", "XSIfSz3ZEGc", "hW5pHqeC1t4", "_cJV_l9tlaU", "ChT4bsCpwcU", ...] 14:09:22.352 [debug] QUERY OK source="media_items" db=9.8ms idle=450.4ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [20] 14:09:22.358 [debug] QUERY OK source="tasks" db=0.9ms idle=463.1ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [203082, 20, ~U[2026-01-03 03:09:22Z], ~U[2026-01-03 03:09:22Z]] 14:09:22.359 [info] {"args":{"id":20},"id":203058,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":467791,"event":"job:stop","queue_time":435590,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 14:09:24.899 [info] {"args":{"id":21},"id":203059,"meta":{},"system_time":1767409764899252331,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 14:09:24.900 [debug] QUERY OK source="sources" db=0.7ms idle=1520.5ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [21] 14:09:24.901 [debug] QUERY OK source="settings" db=0.4ms idle=1521.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:09:24.902 [debug] QUERY OK source="media_profiles" db=0.7ms idle=1014.0ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 14:09:24.903 [debug] QUERY OK source="settings" db=0.6ms idle=10.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:09:24.903 [debug] Fetching recent media IDs from YouTube API for playlist: UU2-i3KuYoODXsM99Z3-Gm0A 14:09:24.904 [debug] QUERY OK source="settings" db=0.5ms idle=4.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:09:24.904 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 14:09:25.274 [debug] QUERY OK source="media_items" db=4.4ms idle=369.4ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND m0."media_id" IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [21, "J5rMffRWoaE", "SpNjg65s29I", "8YoFYb6ahAc", "2z0gjjea0mQ", "2d3dU0R4Sk4", "_TFHZ9W3Jt8", "dqjpFcJG5Cc", "Pm0PXgXMNVY", "YXwzRiYgHHc", "mUK6UT_7PZo", "nE49QFWymsI", "WY4rfxfFsVA", "LHyVvVpA0xM", "HYIwk4qL2os", "RZBQe4RLdZ8", "DN5ES5PlK6c", "OaO4UInG53A", "UqcJk1mPcnQ", "NqSJZesKtFs", "3bsFFOwsQzA", "EaXJ1rQ2v5k", "jnV5Ptgg1Xc", "rXghFt-g_OM", "Y_MU28GV-M0", "OZ1fXb4gcv0", "t7JeRNvBG40", "XG41sdzNz7I", "rQFtIiVV7RA", "TviKrv1FTzc", "0iH3eN6DUbM", "AjzhbnNiJO0", "3Y2fdnw7AwM", "8Z_XpRjS2oo", "RY1Nnw_qOGc", "pUB0TU9UQhI", "eVR3mgSxjUk", "5hGYObRZMPQ", "4MemHNHi_YE", "yM6u1-_JNXo", "VGLq2Tjokl4", "XpV4r2KB0UA", "cvrpvL1kO_8", "Q4kS9l81A0k", "Mq47ro7Pc00", "GAu1Y-5EPeM", "dNIc1vTlbDc", "S1zqKNfggRQ", "zquTrv6kv-U", "-H6sKLcAL9I", ...] 14:09:25.285 [debug] QUERY OK source="media_items" db=8.8ms idle=375.2ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [21] 14:09:25.289 [debug] QUERY OK source="tasks" db=0.8ms idle=384.7ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [203083, 21, ~U[2026-01-03 03:09:25Z], ~U[2026-01-03 03:09:25Z]] 14:09:25.290 [info] {"args":{"id":21},"id":203059,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":390692,"event":"job:stop","queue_time":514990,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 14:09:42.978 [info] {"source":"oban","duration":2538,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:09:59.867 [info] GET /sources/23/media/21397/force_download 14:09:59.868 [debug] QUERY OK source="settings" db=0.3ms queue=0.1ms idle=1488.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:09:59.869 [debug] QUERY OK source="settings" db=0.2ms queue=0.1ms idle=1489.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:09:59.869 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 14:09:59.870 [error] #PID<0.10988.0> running PinchflatWeb.Endpoint (connection #PID<0.10987.0>, stream id 1) terminated Server: pinchflat.uiau7e.uncld.dev:80 (http) Request: GET /sources/23/media/21397/force_download ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/23/media/21397/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.10987.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/23/media/21397/force_download", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 45088}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "from" => "gptbot(at)openai.com", "host" => "pinchflat.uiau7e.uncld.dev", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.3; +https://openai.com/gptbot)", "via" => "2.0 Caddy", "x-forwarded-for" => "74.7.227.183", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https", "x-openai-host-hash" => "454925582" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.uiau7e.uncld.dev", method: "GET", owner: #PID<0.10988.0>, params: %{}, path_info: ["sources", "23", "media", "21397", "force_download"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.uiau7e.uncld.dev", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {10, 210, 0, 2}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"accept-encoding", "gzip, br, deflate"}, {"from", "gptbot(at)openai.com"}, {"host", "pinchflat.uiau7e.uncld.dev"}, {"user-agent", "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.3; +https://openai.com/gptbot)"}, {"via", "2.0 Caddy"}, {"x-forwarded-for", "74.7.227.183"}, {"x-forwarded-host", "pinchflat.uiau7e.uncld.dev"}, {"x-forwarded-proto", "https"}, {"x-openai-host-hash", "454925582"} ], request_path: "/sources/23/media/21397/force_download", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GIcZ2U2hLPTa7K0AAg2B"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.10987.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/23/media/21397/force_download", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 45088}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "from" => "gptbot(at)openai.com", "host" => "pinchflat.uiau7e.uncld.dev", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.3; +https://openai.com/gptbot)", "via" => "2.0 Caddy", "x-forwarded-for" => "74.7.227.183", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https", "x-openai-host-hash" => "454925582" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/23/media/21397/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.10987.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/23/media/21397/force_download", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 45088}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "from" => "gptbot(at)openai.com", "host" => "pinchflat.uiau7e.uncld.dev", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.3; +https://openai.com/gptbot)", "via" => "2.0 Caddy", "x-forwarded-for" => "74.7.227.183", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https", "x-openai-host-hash" => "454925582" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.uiau7e.uncld.dev", method: "GET", owner: #PID<0.10988.0>, params: %{}, path_info: ["sources", "23", "media", "21397", "force_download"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.uiau7e.uncld.dev", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {10, 210, 0, 2}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"accept-en (truncated) 14:10:00.226 [info] {"source":"oban","duration":350,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 14:10:12.979 [info] {"source":"oban","duration":1097,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:10:42.982 [info] {"source":"oban","duration":1936,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:11:00.227 [info] {"source":"oban","duration":955,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 14:11:02.252 [info] GET /sources/13/media/52924/force_download 14:11:02.254 [debug] QUERY OK source="settings" db=0.7ms idle=1874.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:11:02.255 [debug] QUERY OK source="settings" db=0.4ms idle=1074.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:11:02.255 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 14:11:02.256 [error] #PID<0.10995.0> running PinchflatWeb.Endpoint (connection #PID<0.10994.0>, stream id 1) terminated Server: pinchflat.uiau7e.uncld.dev:80 (http) Request: GET /sources/13/media/52924/force_download ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/13/media/52924/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.10994.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/13/media/52924/force_download", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 48108}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "from" => "gptbot(at)openai.com", "host" => "pinchflat.uiau7e.uncld.dev", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.3; +https://openai.com/gptbot)", "via" => "2.0 Caddy", "x-forwarded-for" => "74.7.227.183", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https", "x-openai-host-hash" => "454925582" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.uiau7e.uncld.dev", method: "GET", owner: #PID<0.10995.0>, params: %{}, path_info: ["sources", "13", "media", "52924", "force_download"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.uiau7e.uncld.dev", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {10, 210, 0, 2}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"accept-encoding", "gzip, br, deflate"}, {"from", "gptbot(at)openai.com"}, {"host", "pinchflat.uiau7e.uncld.dev"}, {"user-agent", "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.3; +https://openai.com/gptbot)"}, {"via", "2.0 Caddy"}, {"x-forwarded-for", "74.7.227.183"}, {"x-forwarded-host", "pinchflat.uiau7e.uncld.dev"}, {"x-forwarded-proto", "https"}, {"x-openai-host-hash", "454925582"} ], request_path: "/sources/13/media/52924/force_download", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GIcZ59QYDoli2rYAAg3B"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.10994.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/13/media/52924/force_download", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 48108}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "from" => "gptbot(at)openai.com", "host" => "pinchflat.uiau7e.uncld.dev", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.3; +https://openai.com/gptbot)", "via" => "2.0 Caddy", "x-forwarded-for" => "74.7.227.183", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https", "x-openai-host-hash" => "454925582" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/13/media/52924/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.10994.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/13/media/52924/force_download", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 48108}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "from" => "gptbot(at)openai.com", "host" => "pinchflat.uiau7e.uncld.dev", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.3; +https://openai.com/gptbot)", "via" => "2.0 Caddy", "x-forwarded-for" => "74.7.227.183", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https", "x-openai-host-hash" => "454925582" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.uiau7e.uncld.dev", method: "GET", owner: #PID<0.10995.0>, params: %{}, path_info: ["sources", "13", "media", "52924", "force_download"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.uiau7e.uncld.dev", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {10, 210, 0, 2}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"accept-en (truncated) 14:11:12.985 [info] {"source":"oban","duration":1666,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:11:24.739 [info] GET /.well-known/acme-challenge/6gLgG2tSLJwZkcXlbCgPrF-eQ1eCrI3gSEmjqTxnEKQ 14:11:24.740 [debug] QUERY OK source="settings" db=0.3ms idle=1360.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:11:24.741 [debug] QUERY OK source="settings" db=0.5ms queue=0.1ms idle=1361.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:11:24.741 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 14:11:24.742 [error] #PID<0.10997.0> running PinchflatWeb.Endpoint (connection #PID<0.10996.0>, stream id 1) terminated Server: pinchflat.uiau7e.uncld.dev:80 (http) Request: GET /.well-known/acme-challenge/6gLgG2tSLJwZkcXlbCgPrF-eQ1eCrI3gSEmjqTxnEKQ ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /.well-known/acme-challenge/6gLgG2tSLJwZkcXlbCgPrF-eQ1eCrI3gSEmjqTxnEKQ (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.10996.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/.well-known/acme-challenge/6gLgG2tSLJwZkcXlbCgPrF-eQ1eCrI3gSEmjqTxnEKQ", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 54810}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip", "host" => "pinchflat.uiau7e.uncld.dev", "referer" => "http://pinchflat.uiau7e.uncld.dev/.well-known/acme-challenge/6gLgG2tSLJwZkcXlbCgPrF-eQ1eCrI3gSEmjqTxnEKQ", "user-agent" => "Mozilla/5.0 (compatible; Let's Encrypt validation server; +https://www.letsencrypt.org)", "via" => "1.1 Caddy", "x-forwarded-for" => "66.133.109.36", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.uiau7e.uncld.dev", method: "GET", owner: #PID<0.10997.0>, params: %{}, path_info: [".well-known", "acme-challenge", "6gLgG2tSLJwZkcXlbCgPrF-eQ1eCrI3gSEmjqTxnEKQ"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.uiau7e.uncld.dev", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {10, 210, 0, 2}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"accept-encoding", "gzip"}, {"host", "pinchflat.uiau7e.uncld.dev"}, {"referer", "http://pinchflat.uiau7e.uncld.dev/.well-known/acme-challenge/6gLgG2tSLJwZkcXlbCgPrF-eQ1eCrI3gSEmjqTxnEKQ"}, {"user-agent", "Mozilla/5.0 (compatible; Let's Encrypt validation server; +https://www.letsencrypt.org)"}, {"via", "1.1 Caddy"}, {"x-forwarded-for", "66.133.109.36"}, {"x-forwarded-host", "pinchflat.uiau7e.uncld.dev"}, {"x-forwarded-proto", "https"} ], request_path: "/.well-known/acme-challenge/6gLgG2tSLJwZkcXlbCgPrF-eQ1eCrI3gSEmjqTxnEKQ", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GIcZ7RBkHV3Vqy8AAg3h"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.10996.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/.well-known/acme-challenge/6gLgG2tSLJwZkcXlbCgPrF-eQ1eCrI3gSEmjqTxnEKQ", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 54810}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip", "host" => "pinchflat.uiau7e.uncld.dev", "referer" => "http://pinchflat.uiau7e.uncld.dev/.well-known/acme-challenge/6gLgG2tSLJwZkcXlbCgPrF-eQ1eCrI3gSEmjqTxnEKQ", "user-agent" => "Mozilla/5.0 (compatible; Let's Encrypt validation server; +https://www.letsencrypt.org)", "via" => "1.1 Caddy", "x-forwarded-for" => "66.133.109.36", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /.well-known/acme-challenge/6gLgG2tSLJwZkcXlbCgPrF-eQ1eCrI3gSEmjqTxnEKQ (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.10996.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/.well-known/acme-challenge/6gLgG2tSLJwZkcXlbCgPrF-eQ1eCrI3gSEmjqTxnEKQ", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 54810}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip", "host" => "pinchflat.uiau7e.uncld.dev", "referer" => "http://pinchflat.uiau7e.uncld.dev/.well-known/acme-challenge/6gLgG2tSLJwZkcXlbCgPrF-eQ1eCrI3gSEmjqTxnEKQ", "user-agent" => "Mozilla/5.0 (compatible; Let's Encrypt validation server; +https://www.letsencrypt.org)", "via" => "1.1 Caddy", "x-forwarded-for" => "66.133.109.36", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.uiau7e.uncld.dev", method: "GET", owner: #PID<0.10997.0>, params: %{}, path_info: [".well-known", "acme-challenge", "6gLgG2tSLJwZkcXlbCgPrF-eQ1eCrI3gSEmjqTxnEKQ"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.u (truncated) 14:11:31.257 [info] GET /.well-known/acme-challenge/WsqqGcOHn1Tf9pQ4yYe_E3fFU2HU1woM3GSWL0LGfEk 14:11:31.258 [debug] QUERY OK source="settings" db=0.7ms idle=1879.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:11:31.260 [debug] QUERY OK source="settings" db=0.6ms queue=0.2ms idle=880.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:11:31.260 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 14:11:31.261 [error] #PID<0.11001.0> running PinchflatWeb.Endpoint (connection #PID<0.11000.0>, stream id 1) terminated Server: pinchflat.uiau7e.uncld.dev:80 (http) Request: GET /.well-known/acme-challenge/WsqqGcOHn1Tf9pQ4yYe_E3fFU2HU1woM3GSWL0LGfEk ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /.well-known/acme-challenge/WsqqGcOHn1Tf9pQ4yYe_E3fFU2HU1woM3GSWL0LGfEk (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.11000.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/.well-known/acme-challenge/WsqqGcOHn1Tf9pQ4yYe_E3fFU2HU1woM3GSWL0LGfEk", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 39426}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip", "host" => "pinchflat.uiau7e.uncld.dev", "referer" => "http://pinchflat.uiau7e.uncld.dev/.well-known/acme-challenge/WsqqGcOHn1Tf9pQ4yYe_E3fFU2HU1woM3GSWL0LGfEk", "user-agent" => "Mozilla/5.0 (compatible; Let's Encrypt validation server; +https://www.letsencrypt.org)", "via" => "1.1 Caddy", "x-forwarded-for" => "66.133.109.36", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.uiau7e.uncld.dev", method: "GET", owner: #PID<0.11001.0>, params: %{}, path_info: [".well-known", "acme-challenge", "WsqqGcOHn1Tf9pQ4yYe_E3fFU2HU1woM3GSWL0LGfEk"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.uiau7e.uncld.dev", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {10, 210, 0, 2}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"accept-encoding", "gzip"}, {"host", "pinchflat.uiau7e.uncld.dev"}, {"referer", "http://pinchflat.uiau7e.uncld.dev/.well-known/acme-challenge/WsqqGcOHn1Tf9pQ4yYe_E3fFU2HU1woM3GSWL0LGfEk"}, {"user-agent", "Mozilla/5.0 (compatible; Let's Encrypt validation server; +https://www.letsencrypt.org)"}, {"via", "1.1 Caddy"}, {"x-forwarded-for", "66.133.109.36"}, {"x-forwarded-host", "pinchflat.uiau7e.uncld.dev"}, {"x-forwarded-proto", "https"} ], request_path: "/.well-known/acme-challenge/WsqqGcOHn1Tf9pQ4yYe_E3fFU2HU1woM3GSWL0LGfEk", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GIcZ7pTrX9kObUEAAg4h"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.11000.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/.well-known/acme-challenge/WsqqGcOHn1Tf9pQ4yYe_E3fFU2HU1woM3GSWL0LGfEk", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 39426}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip", "host" => "pinchflat.uiau7e.uncld.dev", "referer" => "http://pinchflat.uiau7e.uncld.dev/.well-known/acme-challenge/WsqqGcOHn1Tf9pQ4yYe_E3fFU2HU1woM3GSWL0LGfEk", "user-agent" => "Mozilla/5.0 (compatible; Let's Encrypt validation server; +https://www.letsencrypt.org)", "via" => "1.1 Caddy", "x-forwarded-for" => "66.133.109.36", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /.well-known/acme-challenge/WsqqGcOHn1Tf9pQ4yYe_E3fFU2HU1woM3GSWL0LGfEk (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.11000.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/.well-known/acme-challenge/WsqqGcOHn1Tf9pQ4yYe_E3fFU2HU1woM3GSWL0LGfEk", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 39426}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip", "host" => "pinchflat.uiau7e.uncld.dev", "referer" => "http://pinchflat.uiau7e.uncld.dev/.well-known/acme-challenge/WsqqGcOHn1Tf9pQ4yYe_E3fFU2HU1woM3GSWL0LGfEk", "user-agent" => "Mozilla/5.0 (compatible; Let's Encrypt validation server; +https://www.letsencrypt.org)", "via" => "1.1 Caddy", "x-forwarded-for" => "66.133.109.36", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.uiau7e.uncld.dev", method: "GET", owner: #PID<0.11001.0>, params: %{}, path_info: [".well-known", "acme-challenge", "WsqqGcOHn1Tf9pQ4yYe_E3fFU2HU1woM3GSWL0LGfEk"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.u (truncated) 14:11:42.989 [info] {"source":"oban","duration":2318,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:12:00.229 [info] {"source":"oban","duration":420,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 14:12:06.667 [info] GET /sources/17/media/39300/force_download 14:12:06.669 [debug] QUERY OK source="settings" db=0.4ms queue=0.1ms idle=1289.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:12:06.669 [debug] QUERY OK source="settings" db=0.4ms queue=0.1ms idle=292.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:12:06.670 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 14:12:06.671 [error] #PID<0.11005.0> running PinchflatWeb.Endpoint (connection #PID<0.11004.0>, stream id 1) terminated Server: pinchflat.uiau7e.uncld.dev:80 (http) Request: GET /sources/17/media/39300/force_download ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/17/media/39300/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.11004.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/17/media/39300/force_download", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 38180}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "from" => "gptbot(at)openai.com", "host" => "pinchflat.uiau7e.uncld.dev", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.3; +https://openai.com/gptbot)", "via" => "2.0 Caddy", "x-forwarded-for" => "74.7.227.183", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https", "x-openai-host-hash" => "454925582" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.uiau7e.uncld.dev", method: "GET", owner: #PID<0.11005.0>, params: %{}, path_info: ["sources", "17", "media", "39300", "force_download"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.uiau7e.uncld.dev", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {10, 210, 0, 2}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"accept-encoding", "gzip, br, deflate"}, {"from", "gptbot(at)openai.com"}, {"host", "pinchflat.uiau7e.uncld.dev"}, {"user-agent", "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.3; +https://openai.com/gptbot)"}, {"via", "2.0 Caddy"}, {"x-forwarded-for", "74.7.227.183"}, {"x-forwarded-host", "pinchflat.uiau7e.uncld.dev"}, {"x-forwarded-proto", "https"}, {"x-openai-host-hash", "454925582"} ], request_path: "/sources/17/media/39300/force_download", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GIcZ9tOHh6UgLPwAAg5B"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.11004.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/17/media/39300/force_download", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 38180}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "from" => "gptbot(at)openai.com", "host" => "pinchflat.uiau7e.uncld.dev", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.3; +https://openai.com/gptbot)", "via" => "2.0 Caddy", "x-forwarded-for" => "74.7.227.183", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https", "x-openai-host-hash" => "454925582" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/17/media/39300/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.11004.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/17/media/39300/force_download", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 38180}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "from" => "gptbot(at)openai.com", "host" => "pinchflat.uiau7e.uncld.dev", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.3; +https://openai.com/gptbot)", "via" => "2.0 Caddy", "x-forwarded-for" => "74.7.227.183", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https", "x-openai-host-hash" => "454925582" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.uiau7e.uncld.dev", method: "GET", owner: #PID<0.11005.0>, params: %{}, path_info: ["sources", "17", "media", "39300", "force_download"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.uiau7e.uncld.dev", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {10, 210, 0, 2}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"accept-en (truncated) 14:12:12.993 [info] {"source":"oban","duration":3016,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:12:13.056 [info] GET /.well-known/acme-challenge/5ENZrpVZI7mWMRpSXAc4OEM4CmR8Evo0LDj29Cq1B_s 14:12:13.057 [debug] QUERY OK source="settings" db=0.3ms idle=677.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:12:13.057 [debug] QUERY OK source="settings" db=0.6ms idle=678.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:12:13.058 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 14:12:13.058 [error] #PID<0.11007.0> running PinchflatWeb.Endpoint (connection #PID<0.11006.0>, stream id 1) terminated Server: pinchflat.suranyami.com:80 (http) Request: GET /.well-known/acme-challenge/5ENZrpVZI7mWMRpSXAc4OEM4CmR8Evo0LDj29Cq1B_s ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /.well-known/acme-challenge/5ENZrpVZI7mWMRpSXAc4OEM4CmR8Evo0LDj29Cq1B_s (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.11006.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/.well-known/acme-challenge/5ENZrpVZI7mWMRpSXAc4OEM4CmR8Evo0LDj29Cq1B_s", host: "pinchflat.suranyami.com", peer: {{10, 210, 0, 2}, 38190}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip", "host" => "pinchflat.suranyami.com", "referer" => "http://pinchflat.suranyami.com/.well-known/acme-challenge/5ENZrpVZI7mWMRpSXAc4OEM4CmR8Evo0LDj29Cq1B_s", "user-agent" => "Mozilla/5.0 (compatible; Let's Encrypt validation server; +https://www.letsencrypt.org)", "via" => "1.1 Caddy", "x-forwarded-for" => "66.133.109.36", "x-forwarded-host" => "pinchflat.suranyami.com", "x-forwarded-proto" => "https" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.suranyami.com", method: "GET", owner: #PID<0.11007.0>, params: %{}, path_info: [".well-known", "acme-challenge", "5ENZrpVZI7mWMRpSXAc4OEM4CmR8Evo0LDj29Cq1B_s"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.suranyami.com", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {10, 210, 0, 2}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"accept-encoding", "gzip"}, {"host", "pinchflat.suranyami.com"}, {"referer", "http://pinchflat.suranyami.com/.well-known/acme-challenge/5ENZrpVZI7mWMRpSXAc4OEM4CmR8Evo0LDj29Cq1B_s"}, {"user-agent", "Mozilla/5.0 (compatible; Let's Encrypt validation server; +https://www.letsencrypt.org)"}, {"via", "1.1 Caddy"}, {"x-forwarded-for", "66.133.109.36"}, {"x-forwarded-host", "pinchflat.suranyami.com"}, {"x-forwarded-proto", "https"} ], request_path: "/.well-known/acme-challenge/5ENZrpVZI7mWMRpSXAc4OEM4CmR8Evo0LDj29Cq1B_s", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GIcZ-FBOIIkGsX8AAOjC"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.11006.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/.well-known/acme-challenge/5ENZrpVZI7mWMRpSXAc4OEM4CmR8Evo0LDj29Cq1B_s", host: "pinchflat.suranyami.com", peer: {{10, 210, 0, 2}, 38190}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip", "host" => "pinchflat.suranyami.com", "referer" => "http://pinchflat.suranyami.com/.well-known/acme-challenge/5ENZrpVZI7mWMRpSXAc4OEM4CmR8Evo0LDj29Cq1B_s", "user-agent" => "Mozilla/5.0 (compatible; Let's Encrypt validation server; +https://www.letsencrypt.org)", "via" => "1.1 Caddy", "x-forwarded-for" => "66.133.109.36", "x-forwarded-host" => "pinchflat.suranyami.com", "x-forwarded-proto" => "https" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /.well-known/acme-challenge/5ENZrpVZI7mWMRpSXAc4OEM4CmR8Evo0LDj29Cq1B_s (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.11006.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/.well-known/acme-challenge/5ENZrpVZI7mWMRpSXAc4OEM4CmR8Evo0LDj29Cq1B_s", host: "pinchflat.suranyami.com", peer: {{10, 210, 0, 2}, 38190}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip", "host" => "pinchflat.suranyami.com", "referer" => "http://pinchflat.suranyami.com/.well-known/acme-challenge/5ENZrpVZI7mWMRpSXAc4OEM4CmR8Evo0LDj29Cq1B_s", "user-agent" => "Mozilla/5.0 (compatible; Let's Encrypt validation server; +https://www.letsencrypt.org)", "via" => "1.1 Caddy", "x-forwarded-for" => "66.133.109.36", "x-forwarded-host" => "pinchflat.suranyami.com", "x-forwarded-proto" => "https" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.suranyami.com", method: "GET", owner: #PID<0.11007.0>, params: %{}, path_info: [".well-known", "acme-challenge", "5ENZrpVZI7mWMRpSXAc4OEM4CmR8Evo0LDj29Cq1B_s"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.suranyami.com", :phoenix_router => PinchflatWe (truncated) 14:12:18.419 [info] {"args":{"id":19},"id":203060,"meta":{},"system_time":1767409938419151860,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 14:12:18.420 [debug] QUERY OK source="sources" db=0.4ms idle=40.6ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [19] 14:12:18.420 [debug] QUERY OK source="settings" db=0.3ms idle=41.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:12:18.421 [debug] QUERY OK source="media_profiles" db=0.4ms idle=42.0ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 14:12:18.422 [debug] QUERY OK source="settings" db=0.2ms idle=9.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:12:18.422 [debug] Fetching recent media IDs from YouTube API for playlist: UUaYhH3F6iB3KyW3afTHk5XA 14:12:18.422 [debug] QUERY OK source="settings" db=0.3ms idle=3.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:12:18.422 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 14:12:18.936 [debug] QUERY OK source="media_items" db=3.7ms idle=512.3ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND m0."media_id" IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [19, "mUlKcxGWvrQ", "ydfuNK4wSik", "x6cNQykYdEM", "SvyVS7zvquc", "l4O2F-1BWVI", "LYXADYUSTSg", "HpL40FdPGqk", "Wre5VWHxSug", "PdUu77SAH0I", "VCflrtok9hQ", "haEa6h8Ptf0", "c_-f7G9VSPw", "7rSLcNznix4", "OLXr-B-xwY8", "X05FPJq6_Oc", "kuL-trgOvq8", "WpBEifN8BYw", "YETks_YtraY", "bwKKd4N8Q2E", "PpNfOqbt0a8", "GyifuiQ6p48", "SkoFBCBASto", "-GNid2M6IC8", "muehDmLuJSw", "nBx5yssxPDk", "Q6vzDo6it9o", "AH9Z6_PlKhA", "dZfthyLyjDk", "j9UuSMaqX9Q", "jmoVFLUvyD0", "tKm_pnNEDsc", "boVAiizeh1M", "FNtBH6k7Jmo", "MDhN5WGOJ_o", "P-UQX5L_Ff0", "kys3lRzOOEY", "VDHSC2Dl8f0", "JU0uEdyPKlE", "0sSWAzq7rjc", "HOLXNrjWeuo"] 14:12:18.939 [debug] QUERY OK source="media_items" db=2.0ms idle=516.8ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [19] 14:12:18.944 [debug] QUERY OK source="tasks" db=1.0ms queue=0.1ms idle=520.9ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [203084, 19, ~U[2026-01-03 03:12:18Z], ~U[2026-01-03 03:12:18Z]] 14:12:18.946 [info] {"args":{"id":19},"id":203060,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":525893,"event":"job:stop","queue_time":327099,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 14:12:19.424 [info] {"args":{"id":23},"id":203061,"meta":{},"system_time":1767409939424042068,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 14:12:19.425 [debug] QUERY OK source="sources" db=0.6ms idle=479.5ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [23] 14:12:19.425 [debug] QUERY OK source="settings" db=0.5ms idle=479.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:12:19.426 [debug] QUERY OK source="media_profiles" db=0.5ms idle=471.8ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 14:12:19.427 [debug] QUERY OK source="settings" db=0.4ms idle=10.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:12:19.427 [debug] Fetching recent media IDs from YouTube API for playlist: UUSHvlfXUGYGWmDBg-afA5Bg 14:12:19.428 [debug] QUERY OK source="settings" db=0.4ms idle=3.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:12:19.428 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 14:12:19.767 [debug] QUERY OK source="media_items" db=3.7ms idle=338.1ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND m0."media_id" IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [23, "QASZbKPkS08", "pr7MMAFzHe8", "DG0BSdc6kKg", "o7DJZCU8q34", "G5A2QGwRmS4", "PER4GK9LCTA", "GzIS1WZFKtc", "24P4MFV-HrM", "6x6df3uagb4", "vALU9LhFKhE", "KF1grNBv5hU", "SLSPmp8-tXE", "53liPfHBgYQ", "zykmoM0qjbA", "boyfPk5qdBM", "H2VYuo7yb2o", "75_mYLpHDr4", "PSnlGB9aKVI", "vFBFSi2XqrQ", "X2z1ugOwR2A", "ePV6FKD1J9U", "ipxj_tl_6XY", "6l9-ctzSbCo", "xu3DTyCW3Yk", "wpAt0QaSk7U", "NXy9Sg0KIMY", "ml5AG_Q0y6w", "h_Uq6-e06y8", "37_rLteuwG4", "QCbf0kOJ8lA"] 14:12:19.770 [debug] QUERY OK source="media_items" db=1.4ms idle=342.7ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [23] 14:12:19.775 [debug] QUERY OK source="tasks" db=1.0ms idle=345.8ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [203085, 23, ~U[2026-01-03 03:12:19Z], ~U[2026-01-03 03:12:19Z]] 14:12:19.776 [info] {"args":{"id":23},"id":203061,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":351035,"event":"job:stop","queue_time":450590,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 14:12:20.427 [info] {"args":{"id":25},"id":203062,"meta":{},"system_time":1767409940427495387,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 14:12:20.428 [debug] QUERY OK source="sources" db=0.3ms idle=652.8ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [25] 14:12:20.428 [debug] QUERY OK source="settings" db=0.3ms idle=652.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:12:20.429 [debug] QUERY OK source="media_profiles" db=0.4ms idle=645.1ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 14:12:20.430 [debug] QUERY OK source="settings" db=0.4ms idle=9.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:12:20.430 [debug] Fetching recent media IDs from YouTube API for playlist: UUWstkeBSSIEgw6n5qnlXXuA 14:12:20.430 [debug] QUERY OK source="settings" db=0.3ms idle=3.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:12:20.431 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 14:12:20.747 [debug] QUERY OK source="media_items" db=1.1ms idle=317.8ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND m0."media_id" IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [25, "_sYSZI--9TA", "T7P86y4vYKs", "qWpf9ysgE04", "81v7r86tRRE", "a3LYS6jzPKA", "o5UKHwwdhmA", "6CCxzLKCHYA", "VONzFNo8uW4", "jJUysp-6qBs", "3KzmAquL3e4", "5cgK_MdFz7s", "bHpsXfutTFY", "kVhFNQj86Ng", "nyd40ZDhRw4"] 14:12:20.749 [debug] QUERY OK source="media_items" db=1.0ms idle=319.4ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [25] 14:12:20.753 [debug] QUERY OK source="tasks" db=0.9ms queue=0.1ms idle=321.6ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [203086, 25, ~U[2026-01-03 03:12:20Z], ~U[2026-01-03 03:12:20Z]] 14:12:20.755 [info] {"args":{"id":25},"id":203062,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":326307,"event":"job:stop","queue_time":141631,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 14:12:21.435 [info] {"args":{"id":17},"id":203063,"meta":{},"system_time":1767409941435686610,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 14:12:21.436 [debug] QUERY OK source="sources" db=0.2ms idle=682.5ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [17] 14:12:21.436 [debug] QUERY OK source="settings" db=0.1ms idle=681.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:12:21.437 [debug] QUERY OK source="media_profiles" db=0.1ms idle=673.7ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 14:12:21.438 [debug] QUERY OK source="settings" db=0.6ms idle=14.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:12:21.438 [debug] Fetching recent media IDs from YouTube API for playlist: UUEIwxahdLz7bap-VDs9h35A 14:12:21.438 [debug] QUERY OK source="settings" db=0.1ms idle=2.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:12:21.438 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 14:12:21.772 [debug] QUERY OK source="media_items" db=2.8ms idle=333.1ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND m0."media_id" IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [17, "kuMUquaeE6g", "-NzfTE8RI4w", "2eiYALLYBFE", "J_vXK9uvRf4", "tRDxBwverlI", "ymlNErMdI2k", "hM1l19H0tX8", "qg01MgiVT9k", "a3l6FdpltbQ", "NtZaP8VMv0c", "ayicYezINas", "zoTuSOEOvPw", "U7NHNT3M-tw", "B_PCZiNlmPw", "5glksNTKkZI", "iDsb-pxE3fA", "7PJi9KSDVbQ", "CfhsW1kaa2Q", "pleHURTV6fU", "T47s4L1Wje4", "LLlghvxVoH0", "K4542wtX8B4", "rf-efIZI_Dg", "OXvdwc6NDqM", "nGEHUbTtpPY", "0FybegjTkgw", "3TgdCWBV0pg", "Qjd4CREfYbo", "pqnyUemUDF4", "6-FQSEVc_cs", "BvoDuNZ9gLA", "AjJfefo41M8", "dJSGJ1-9XWw", "Mcg9GcilBfU", "MQSwyrjTV2M", "o-dZKBwbsis", "matUCqoiSGk", "0_VdGzEk5-M", "PAOpkv0fpik", "VdwSMytC7y4", "tw5tQPm-B00", "vkD3-msLIHg", "INq7pAmaUuk", "mfTVxFapdLw", "kY2YeM5fNDw", "lkWRiks6luc", "yiCM_i8r4RM", "XzBMFsZT5gM", "dKN6XatdVkY", ...] 14:12:21.778 [debug] QUERY OK source="media_items" db=3.4ms queue=0.1ms idle=338.4ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [17] 14:12:21.784 [debug] QUERY OK source="tasks" db=0.9ms idle=344.3ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [203087, 17, ~U[2026-01-03 03:12:21Z], ~U[2026-01-03 03:12:21Z]] 14:12:21.785 [info] {"args":{"id":17},"id":203063,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":348533,"event":"job:stop","queue_time":471058,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 14:12:42.997 [info] {"source":"oban","duration":3476,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:13:00.230 [info] {"source":"oban","duration":685,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 14:13:06.687 [info] GET /sources/13/media/38817/force_download 14:13:06.688 [debug] QUERY OK source="settings" db=0.5ms idle=1308.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:13:06.689 [debug] QUERY OK source="settings" db=0.4ms idle=1309.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:13:06.689 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 14:13:06.689 [error] #PID<0.11023.0> running PinchflatWeb.Endpoint (connection #PID<0.11022.0>, stream id 1) terminated Server: pinchflat.uiau7e.uncld.dev:80 (http) Request: GET /sources/13/media/38817/force_download ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/13/media/38817/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.11022.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/13/media/38817/force_download", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 37972}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "from" => "gptbot(at)openai.com", "host" => "pinchflat.uiau7e.uncld.dev", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.3; +https://openai.com/gptbot)", "via" => "2.0 Caddy", "x-forwarded-for" => "74.7.227.183", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https", "x-openai-host-hash" => "454925582" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.uiau7e.uncld.dev", method: "GET", owner: #PID<0.11023.0>, params: %{}, path_info: ["sources", "13", "media", "38817", "force_download"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.uiau7e.uncld.dev", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {10, 210, 0, 2}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"accept-encoding", "gzip, br, deflate"}, {"from", "gptbot(at)openai.com"}, {"host", "pinchflat.uiau7e.uncld.dev"}, {"user-agent", "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.3; +https://openai.com/gptbot)"}, {"via", "2.0 Caddy"}, {"x-forwarded-for", "74.7.227.183"}, {"x-forwarded-host", "pinchflat.uiau7e.uncld.dev"}, {"x-forwarded-proto", "https"}, {"x-openai-host-hash", "454925582"} ], request_path: "/sources/13/media/38817/force_download", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GIcaBMz41kdOgkYAAg_B"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.11022.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/13/media/38817/force_download", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 37972}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "from" => "gptbot(at)openai.com", "host" => "pinchflat.uiau7e.uncld.dev", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.3; +https://openai.com/gptbot)", "via" => "2.0 Caddy", "x-forwarded-for" => "74.7.227.183", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https", "x-openai-host-hash" => "454925582" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/13/media/38817/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.11022.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/13/media/38817/force_download", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 37972}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "from" => "gptbot(at)openai.com", "host" => "pinchflat.uiau7e.uncld.dev", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.3; +https://openai.com/gptbot)", "via" => "2.0 Caddy", "x-forwarded-for" => "74.7.227.183", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https", "x-openai-host-hash" => "454925582" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.uiau7e.uncld.dev", method: "GET", owner: #PID<0.11023.0>, params: %{}, path_info: ["sources", "13", "media", "38817", "force_download"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.uiau7e.uncld.dev", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {10, 210, 0, 2}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"accept-en (truncated) 14:13:12.999 [info] {"source":"oban","duration":1965,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:13:43.003 [info] {"source":"oban","duration":2914,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:13:48.697 [info] {"args":{"id":7},"id":203068,"meta":{},"system_time":1767410028697336292,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 14:13:48.699 [debug] QUERY OK source="sources" db=0.8ms queue=0.2ms idle=319.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [7] 14:13:48.700 [debug] QUERY OK source="settings" db=0.4ms queue=0.1ms idle=320.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:13:48.701 [debug] QUERY OK source="media_profiles" db=0.5ms idle=321.3ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 14:13:48.702 [debug] QUERY OK source="settings" db=0.7ms idle=13.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:13:48.702 [debug] Fetching recent media IDs from YouTube API for playlist: UUwnKziETDbHJtx78nIkfYug 14:13:48.703 [debug] QUERY OK source="settings" db=0.3ms idle=5.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:13:48.703 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 14:13:49.083 [debug] QUERY OK source="media_items" db=5.3ms idle=379.0ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND m0."media_id" IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [7, "mC5NdpSMDks", "ccV3u3D9ONE", "cVCDjEfPzII", "n0X2rqzKTgM", "dcuCvRNqmpY", "GG1qX8jHKGo", "k9wkleHFvo0", "CWoYVlMuUNQ", "xlfeieH4z38", "eZM2Ik-FHEU", "CtcTG8-qzbA", "6Mmj7mf1qlg", "InwVO9qBjqs", "1Hp-W2bpPrw", "VtE5sTpkn7k", "8dOJypt2F70", "Evm4t4prtWo", "taLzgvbrnv0", "rgCrnyf5JEI", "PHhc-48JT3U", "vFKjpNNjNGw", "VJQlOI70ubw", "E5cfNq0DO90", "DNBGSsZatbY", "pna1NyaHTls", "CUHao-vA98g", "cPN9BJe_RQw", "rCBt4XgCX-0", "f4g6KKGMmEI", "P_I5Jsc3xRw", "fPaU2l7RktM", "0PVwt01b6fs", "0qMDM4Y4Hwo", "Ld285PDsHvs", "p1mQC71wplA", "9k5JhKK6WlA", "WPxrifmtlQI", "nVNBmK7a1y8", "QDnMYztaxfI", "gxsaWhXG1Gg", "RMtkKiyrXic", "JKlJ6OW67Bk", "Sjmb8O-fRWI", "qZhD4G7ENSY", "OTWDzMjgsEY", "Y_eCu_pW6-4", "DplgNsjOPRg", "l6hHI3AVoYM", "joAhvj7dfsc", ...] 14:13:49.095 [debug] QUERY OK source="media_items" db=8.8ms idle=386.0ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [7] 14:13:49.103 [debug] QUERY OK source="tasks" db=0.8ms idle=398.9ms INSERT INTO "tasks" ("job_id","media_item_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [203088, 8350, ~U[2026-01-03 03:13:49Z], ~U[2026-01-03 03:13:49Z]] 14:13:49.111 [debug] QUERY OK source="tasks" db=1.3ms idle=8.4ms INSERT INTO "tasks" ("job_id","media_item_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [203089, 8380, ~U[2026-01-03 03:13:49Z], ~U[2026-01-03 03:13:49Z]] 14:13:49.114 [info] {"args":{"id":8350},"id":203088,"meta":{},"system_time":1767410029113855635,"max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 14:13:49.114 [info] {"args":{"id":8380},"id":203089,"meta":{},"system_time":1767410029113933224,"max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 14:13:49.115 [debug] QUERY OK source="media_items" db=1.2ms queue=0.1ms idle=4.3ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [8380] 14:13:49.116 [debug] QUERY OK source="media_items" db=1.8ms idle=6.2ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [8350] 14:13:49.116 [info] User scripts lifecyle file either not present or is empty. Skipping. 14:13:49.116 [info] User scripts lifecyle file either not present or is empty. Skipping. 14:13:49.117 [debug] QUERY OK source="sources" db=1.0ms idle=4.6ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [7] 14:13:49.118 [debug] QUERY OK source="sources" db=1.4ms idle=2.7ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [7] 14:13:49.118 [debug] QUERY OK source="media_profiles" db=0.9ms idle=1.9ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 14:13:49.119 [debug] QUERY OK source="media_profiles" db=0.7ms queue=0.1ms idle=2.1ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 14:13:49.120 [debug] QUERY OK source="media_items" db=1.2ms idle=1.3ms SELECT 1 FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) LIMIT 1 [8350] 14:13:49.121 [debug] QUERY OK source="media_items" db=1.9ms idle=1.4ms SELECT 1 FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) LIMIT 1 [8380] 14:13:49.122 [debug] QUERY OK source="media_metadata" db=0.3ms idle=2.8ms SELECT m0."id", m0."metadata_filepath", m0."thumbnail_filepath", m0."media_item_id", m0."inserted_at", m0."updated_at", m0."media_item_id" FROM "media_metadata" AS m0 WHERE (m0."media_item_id" = ?) [8350] 14:13:49.122 [debug] QUERY OK source="media_metadata" db=0.3ms idle=1.5ms SELECT m0."id", m0."metadata_filepath", m0."thumbnail_filepath", m0."media_item_id", m0."inserted_at", m0."updated_at", m0."media_item_id" FROM "media_metadata" AS m0 WHERE (m0."media_item_id" = ?) [8380] 14:13:49.123 [debug] QUERY OK source="tasks" db=1.1ms idle=1.2ms INSERT INTO "tasks" ("job_id","media_item_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [203090, 8401, ~U[2026-01-03 03:13:49Z], ~U[2026-01-03 03:13:49Z]] 14:13:49.124 [debug] QUERY OK source="media_profiles" db=1.7ms idle=1.5ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 14:13:49.124 [debug] QUERY OK source="media_profiles" db=1.3ms idle=1.2ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 14:13:49.125 [debug] QUERY OK source="settings" db=0.5ms idle=1.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:13:49.125 [debug] QUERY OK source="settings" db=0.7ms queue=0.1ms idle=1.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:13:49.126 [debug] QUERY OK source="settings" db=0.9ms idle=1.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:13:49.127 [debug] QUERY OK source="settings" db=0.9ms queue=0.1ms idle=1.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:13:49.127 [debug] Running yt-dlp command for action: get_downloadable_status 14:13:49.127 [debug] Running yt-dlp command for action: get_downloadable_status 14:13:49.128 [debug] QUERY OK source="tasks" db=0.3ms idle=1.9ms INSERT INTO "tasks" ("job_id","media_item_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [203091, 8418, ~U[2026-01-03 03:13:49Z], ~U[2026-01-03 03:13:49Z]] 14:13:49.128 [debug] QUERY OK source="settings" db=0.2ms idle=1.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:13:49.129 [debug] QUERY OK source="settings" db=0.5ms idle=1.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:13:49.129 [debug] QUERY OK source="settings" db=0.8ms idle=1.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:13:49.129 [debug] QUERY OK source="settings" db=0.3ms idle=0.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:13:49.130 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=aCES82xfgdw --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/82/c3/82c36d2dd29bb0970bbdd28d26f7d0aea3502f39814518e2f3676cee260ccff6.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:13:49.130 [debug] QUERY OK source="settings" db=0.7ms idle=1.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:13:49.130 [debug] QUERY OK source="settings" db=0.3ms idle=0.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:13:49.130 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=bhkmFO8DikY --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/e5/b4/e5b432be3530ea690c347d61e933b37c342bc4c336a714feeb4dbe1a12808e1b.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:13:49.132 [debug] QUERY OK source="tasks" db=0.7ms idle=1.3ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [203092, 7, ~U[2026-01-03 03:13:49Z], ~U[2026-01-03 03:13:49Z]] 14:13:49.132 [info] {"args":{"id":7},"id":203068,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":434759,"event":"job:stop","queue_time":398815,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 14:13:54.372 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=aCES82xfgdw --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/82/c3/82c36d2dd29bb0970bbdd28d26f7d0aea3502f39814518e2f3676cee260ccff6.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 1 with: ERROR: [youtube] aCES82xfgdw: Sign in to confirm your age. This video may be inappropriate for some users. Use --cookies-from-browser or --cookies for the authentication. See https://github.com/yt-dlp/yt-dlp/wiki/FAQ#how-do-i-pass-cookies-to-yt-dlp for how to manually pass cookies. Also see https://github.com/yt-dlp/yt-dlp/wiki/Extractors#exporting-youtube-cookies for tips on effectively exporting YouTube cookies 14:13:54.373 [debug] QUERY OK source="settings" db=0.6ms queue=0.1ms idle=1991.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:13:54.374 [debug] QUERY OK source="settings" db=0.6ms queue=0.1ms idle=1992.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:13:54.375 [debug] Running yt-dlp command for action: get_downloadable_status 14:13:54.378 [debug] QUERY OK source="settings" db=0.4ms queue=0.1ms idle=1996.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:13:54.379 [debug] QUERY OK source="settings" db=0.4ms queue=0.1ms idle=1674.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:13:54.380 [debug] QUERY OK source="settings" db=0.3ms queue=0.1ms idle=671.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:13:54.380 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=aCES82xfgdw --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/16/20/162004fee4b6c76f73c3d5624dbff9abd67e8fe73067679f3b8305a6397f100f.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:13:54.482 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=bhkmFO8DikY --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/e5/b4/e5b432be3530ea690c347d61e933b37c342bc4c336a714feeb4dbe1a12808e1b.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 1 with: ERROR: [youtube] bhkmFO8DikY: Sign in to confirm your age. This video may be inappropriate for some users. Use --cookies-from-browser or --cookies for the authentication. See https://github.com/yt-dlp/yt-dlp/wiki/FAQ#how-do-i-pass-cookies-to-yt-dlp for how to manually pass cookies. Also see https://github.com/yt-dlp/yt-dlp/wiki/Extractors#exporting-youtube-cookies for tips on effectively exporting YouTube cookies 14:13:54.483 [debug] QUERY OK source="settings" db=0.4ms queue=0.1ms idle=109.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:13:54.484 [debug] QUERY OK source="settings" db=0.3ms queue=0.1ms idle=109.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:13:54.485 [debug] Running yt-dlp command for action: get_downloadable_status 14:13:54.486 [debug] QUERY OK source="settings" db=0.1ms idle=108.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:13:54.487 [debug] QUERY OK source="settings" db=0.1ms idle=107.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:13:54.487 [debug] QUERY OK source="settings" db=0.5ms idle=107.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:13:54.488 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=bhkmFO8DikY --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/e7/78/e778db78b3e7acf8da5d4a818e83433e6e462a83bddd3c979d398d0fa13dd3ac.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:13:56.252 [info] GET / 14:13:56.252 [debug] Processing with PinchflatWeb.Pages.PageController.home/2 Parameters: %{} Pipelines: [:browser] 14:13:56.253 [debug] QUERY OK source="settings" db=0.5ms idle=1766.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:13:56.254 [debug] QUERY OK source="media_profiles" db=0.4ms idle=1766.6ms SELECT count(m0."id") FROM "media_profiles" AS m0 [] 14:13:56.254 [debug] QUERY OK source="sources" db=0.3ms idle=1766.6ms SELECT count(s0."id") FROM "sources" AS s0 [] 14:13:56.318 [debug] QUERY OK source="media_items" db=63.6ms idle=1542.2ms SELECT sum(m0."media_size_bytes") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 14:13:56.322 [debug] QUERY OK source="media_items" db=3.2ms idle=601.2ms SELECT count(m0."id") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 14:13:56.323 [debug] QUERY OK source="settings" db=0.3ms queue=0.1ms idle=69.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:13:56.324 [debug] QUERY OK source="settings" db=0.2ms idle=69.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:13:56.325 [debug] QUERY OK source="settings" db=0.2ms idle=70.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:13:56.332 [debug] QUERY OK source="media_items" db=3.4ms queue=0.1ms idle=9.7ms SELECT count(m0."id") FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE (NOT (m0."media_filepath" IS NULL)) [] 14:13:56.333 [debug] QUERY OK source="media_items" db=0.6ms idle=10.0ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE (NOT (m0."media_filepath" IS NULL)) ORDER BY m0."id" DESC LIMIT ? OFFSET ? [5, 0] 14:13:56.334 [debug] QUERY OK source="sources" db=0.5ms queue=0.1ms idle=10.5ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" IN (?,?,?,?)) [18, 21, 15, 24] 14:13:56.376 [debug] QUERY OK source="media_items" db=33.8ms idle=17.7ms SELECT count(m0."id") FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds"))) [] 14:13:56.378 [debug] QUERY OK source="media_items" db=1.9ms queue=0.2ms idle=50.8ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds"))) ORDER BY m0."id" DESC LIMIT ? OFFSET ? [5, 0] 14:13:56.380 [debug] QUERY OK source="sources" db=0.5ms queue=0.1ms idle=48.1ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" IN (?,?)) [27, 5] 14:13:56.387 [debug] QUERY OK source="tasks" db=0.6ms idle=53.7ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", o1."id", o1."state", o1."queue", o1."worker", o1."args", o1."meta", o1."tags", o1."errors", o1."attempt", o1."attempted_by", o1."max_attempts", o1."priority", o1."attempted_at", o1."cancelled_at", o1."completed_at", o1."discarded_at", o1."inserted_at", o1."scheduled_at" FROM "tasks" AS t0 LEFT OUTER JOIN "oban_jobs" AS o1 ON o1."id" = t0."job_id" WHERE (o1."state" IN (?)) AND (? IN (SELECT value FROM JSON_EACH(o1."tags"))) ORDER BY o1."attempted_at" DESC ["executing", "show_in_dashboard"] 14:13:56.389 [debug] QUERY OK source="media_items" db=0.7ms idle=53.6ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at", m0."id" FROM "media_items" AS m0 WHERE (m0."id" IN (?,?)) [8380, 8350] 14:13:56.392 [info] Sent 200 in 139ms 14:13:56.730 [info] {"args":{"id":24},"id":203069,"meta":{},"system_time":1767410036729757644,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 14:13:56.734 [debug] QUERY OK source="sources" db=3.4ms queue=0.2ms idle=349.8ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [24] 14:13:56.735 [debug] QUERY OK source="settings" db=0.7ms queue=0.2ms idle=347.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:13:56.736 [debug] QUERY OK source="media_profiles" db=0.4ms queue=0.1ms idle=347.0ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 14:13:56.741 [debug] QUERY OK source="settings" db=3.5ms queue=0.1ms idle=15.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:13:56.741 [debug] Fetching recent media IDs from YouTube API for playlist: UUNTjSZfAK117b2kFGNCJfdA 14:13:56.742 [debug] QUERY OK source="settings" db=0.3ms queue=0.1ms idle=12.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:13:56.742 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 14:13:57.125 [debug] QUERY OK source="media_items" db=3.8ms idle=386.9ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND m0."media_id" IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [24, "2J48c2sukbo", "zq9gpqgWFv8", "EWdphas_OP4", "-U2sQ3e3R-0", "XdytKwHuG_8", "t-hori2Io14", "Xbemvi42Ngs", "91m4MQw_sZI", "GfUIbPqAMQs", "4VpVt3zdvL8", "q6Kd5C7O-F8", "EV6DSqTOXM0", "mMvfBUNNKIY", "C215grXAMCk", "_x6TE7hbE1k", "vycMxLco0a0", "lJWhisaNv8E", "4Blxc8mVzQs", "ztqcWc5aaks", "0Dvn039qD8I", "Vx69evZOEAE", "4dzZ44-xVds", "Rews5WNxiNk", "f-BFFWzh9uE", "RfJSMWHO0tY", "gMeUOURvDP8", "LEiL1np9sSM", "F-QeDtQ8Gy4", "9FSIF281OAo", "Shav52BfzWk", "dsCfQ3y5tHQ", "0rpt5sMb7cw", "Fe7Y152ak3Y", "HEuablkqrCg", "BRUTYHBJ_Z4", "gpaV4bgEG-g", "ppjFdEbIS4g", "lEhEMRA17bg", "tpIXmmV4ib4", "LBYQ_NLVKCw", "JsdM3k3QiPc", "TNmSVjGyZx0", "OMVYZziNjhc", "uyfyFRvng3c", "YFBg5NNEW4g", "IkZe4pXDv0k", "ZT0in30U-ug", "kqDqSLOuxmM", "ZgLsNSWN46o", ...] 14:13:57.131 [debug] QUERY OK source="media_items" db=1.2ms idle=394.1ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [24] 14:13:57.134 [debug] QUERY OK source="tasks" db=0.4ms idle=391.5ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [203093, 24, ~U[2026-01-03 03:13:57Z], ~U[2026-01-03 03:13:57Z]] 14:13:57.135 [info] {"args":{"id":24},"id":203069,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":404849,"event":"job:stop","queue_time":417370,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 14:13:59.180 [info] GET /wordpress/ 14:13:59.181 [debug] QUERY OK source="settings" db=0.4ms idle=798.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:13:59.182 [debug] QUERY OK source="settings" db=0.9ms idle=799.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:13:59.182 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 14:13:59.183 [error] #PID<0.11038.0> running PinchflatWeb.Endpoint (connection #PID<0.11035.0>, stream id 2) terminated Server: pinchflat.uiau7e.uncld.dev:80 (http) Request: GET /wordpress/ ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /wordpress (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.11035.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/wordpress/", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 51798}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, deflate", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYQ2s2TDlVcUxIOXRHVlZ6ZXdqY2ZWeHJ2.CYbWYON6zek5TEBgnBbMu5yp6xanImH4R6VNcLXm87A", "host" => "pinchflat.uiau7e.uncld.dev", "user-agent" => "Mozilla/5.0 (X11; Linux x86_64) Firefox/117.0", "via" => "1.1 Caddy", "x-forwarded-for" => "34.87.71.187", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 2, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{ "_pinchflat_key" => "SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYQ2s2TDlVcUxIOXRHVlZ6ZXdqY2ZWeHJ2.CYbWYON6zek5TEBgnBbMu5yp6xanImH4R6VNcLXm87A" }, halted: false, host: "pinchflat.uiau7e.uncld.dev", method: "GET", owner: #PID<0.11038.0>, params: %{}, path_info: ["wordpress"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.uiau7e.uncld.dev", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {10, 210, 0, 2}, req_cookies: %{ "_pinchflat_key" => "SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYQ2s2TDlVcUxIOXRHVlZ6ZXdqY2ZWeHJ2.CYbWYON6zek5TEBgnBbMu5yp6xanImH4R6VNcLXm87A" }, req_headers: [ {"accept", "*/*"}, {"accept-encoding", "gzip, deflate"}, {"cookie", "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYQ2s2TDlVcUxIOXRHVlZ6ZXdqY2ZWeHJ2.CYbWYON6zek5TEBgnBbMu5yp6xanImH4R6VNcLXm87A"}, {"host", "pinchflat.uiau7e.uncld.dev"}, {"user-agent", "Mozilla/5.0 (X11; Linux x86_64) Firefox/117.0"}, {"via", "1.1 Caddy"}, {"x-forwarded-for", "34.87.71.187"}, {"x-forwarded-host", "pinchflat.uiau7e.uncld.dev"}, {"x-forwarded-proto", "https"} ], request_path: "/wordpress/", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GIcaEQXMiFEj7aEAAhBB"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.11035.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/wordpress/", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 51798}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, deflate", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYQ2s2TDlVcUxIOXRHVlZ6ZXdqY2ZWeHJ2.CYbWYON6zek5TEBgnBbMu5yp6xanImH4R6VNcLXm87A", "host" => "pinchflat.uiau7e.uncld.dev", "user-agent" => "Mozilla/5.0 (X11; Linux x86_64) Firefox/117.0", "via" => "1.1 Caddy", "x-forwarded-for" => "34.87.71.187", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 2, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /wordpress (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.11035.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/wordpress/", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 51798}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, deflate", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYQ2s2TDlVcUxIOXRHVlZ6ZXdqY2ZWeHJ2.CYbWYON6zek5TEBgnBbMu5yp6xanImH4R6VNcLXm87A", "host" => "pinchflat.uiau7e.uncld.dev", "user-agent" => "Mozilla/5.0 (X11; Linux x86_64) Firefox/117.0", "via" => "1.1 Caddy", "x-forwarded-for" => "34.87.71.187", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 2, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{ "_pinchflat_key" => "SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYQ2s2TDlVcUxIOXRHVlZ6ZXdqY2ZWeHJ2.CYbWYON6zek5TEBgnBbMu5yp6xanImH4R6VNcLXm87A" }, halted: false, host: "pinchflat.uiau7e.uncld.dev", method: "GET", owner: #PID<0.11038.0>, params: %{}, path_info: ["wordpress"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.uiau7e.uncld.dev", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"reques (truncated) 14:13:59.805 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=aCES82xfgdw --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/16/20/162004fee4b6c76f73c3d5624dbff9abd67e8fe73067679f3b8305a6397f100f.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 1 with: ERROR: [youtube] aCES82xfgdw: Sign in to confirm your age. This video may be inappropriate for some users. Use --cookies-from-browser or --cookies for the authentication. See https://github.com/yt-dlp/yt-dlp/wiki/FAQ#how-do-i-pass-cookies-to-yt-dlp for how to manually pass cookies. Also see https://github.com/yt-dlp/yt-dlp/wiki/Extractors#exporting-youtube-cookies for tips on effectively exporting YouTube cookies 14:13:59.805 [error] yt-dlp download error for media item #8350: "ERROR: [youtube] aCES82xfgdw: Sign in to confirm your age. This video may be inappropriate for some users. Use --cookies-from-browser or --cookies for the authentication. See https://github.com/yt-dlp/yt-dlp/wiki/FAQ#how-do-i-pass-cookies-to-yt-dlp for how to manually pass cookies. Also see https://github.com/yt-dlp/yt-dlp/wiki/Extractors#exporting-youtube-cookies for tips on effectively exporting YouTube cookies\n" 14:13:59.805 [error] yt-dlp download will not be retried: "ERROR: [youtube] aCES82xfgdw: Sign in to confirm your age. This video may be inappropriate for some users. Use --cookies-from-browser or --cookies for the authentication. See https://github.com/yt-dlp/yt-dlp/wiki/FAQ#how-do-i-pass-cookies-to-yt-dlp for how to manually pass cookies. Also see https://github.com/yt-dlp/yt-dlp/wiki/Extractors#exporting-youtube-cookies for tips on effectively exporting YouTube cookies\n" 14:13:59.806 [info] {"args":{"id":8350},"id":203088,"meta":{},"state":"success","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":10691735,"event":"job:stop","queue_time":107777,"attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 14:13:59.817 [info] {"args":{"id":8401},"id":203090,"meta":{},"system_time":1767410039816631809,"max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 14:13:59.818 [debug] QUERY OK source="media_items" db=1.1ms queue=0.2ms idle=636.2ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [8401] 14:13:59.819 [info] User scripts lifecyle file either not present or is empty. Skipping. 14:13:59.820 [debug] QUERY OK source="sources" db=0.9ms idle=637.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [7] 14:13:59.822 [debug] QUERY OK source="media_profiles" db=1.0ms idle=90.3ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 14:13:59.824 [debug] QUERY OK source="media_items" db=1.0ms idle=16.4ms SELECT 1 FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) LIMIT 1 [8401] 14:13:59.827 [debug] QUERY OK source="media_metadata" db=0.2ms queue=0.1ms idle=10.2ms SELECT m0."id", m0."metadata_filepath", m0."thumbnail_filepath", m0."media_item_id", m0."inserted_at", m0."updated_at", m0."media_item_id" FROM "media_metadata" AS m0 WHERE (m0."media_item_id" = ?) [8401] 14:13:59.828 [debug] QUERY OK source="media_profiles" db=0.3ms idle=8.7ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 14:13:59.829 [debug] QUERY OK source="settings" db=0.2ms queue=0.1ms idle=8.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:13:59.830 [debug] QUERY OK source="settings" db=0.2ms queue=0.1ms idle=7.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:13:59.831 [debug] Running yt-dlp command for action: get_downloadable_status 14:13:59.833 [debug] QUERY OK source="settings" db=0.8ms idle=8.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:13:59.834 [debug] QUERY OK source="settings" db=0.5ms queue=0.1ms idle=7.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:13:59.835 [debug] QUERY OK source="settings" db=0.4ms queue=0.1ms idle=7.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:13:59.836 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=ZWSj0M132e8 --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/f2/0d/f20d7e9e6de244261672e1ab51ed2b60e8afe18f5aa1dbdca70b833e5b67661a.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:13:59.960 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=bhkmFO8DikY --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/e7/78/e778db78b3e7acf8da5d4a818e83433e6e462a83bddd3c979d398d0fa13dd3ac.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 1 with: ERROR: [youtube] bhkmFO8DikY: Sign in to confirm your age. This video may be inappropriate for some users. Use --cookies-from-browser or --cookies for the authentication. See https://github.com/yt-dlp/yt-dlp/wiki/FAQ#how-do-i-pass-cookies-to-yt-dlp for how to manually pass cookies. Also see https://github.com/yt-dlp/yt-dlp/wiki/Extractors#exporting-youtube-cookies for tips on effectively exporting YouTube cookies 14:13:59.960 [error] yt-dlp download error for media item #8380: "ERROR: [youtube] bhkmFO8DikY: Sign in to confirm your age. This video may be inappropriate for some users. Use --cookies-from-browser or --cookies for the authentication. See https://github.com/yt-dlp/yt-dlp/wiki/FAQ#how-do-i-pass-cookies-to-yt-dlp for how to manually pass cookies. Also see https://github.com/yt-dlp/yt-dlp/wiki/Extractors#exporting-youtube-cookies for tips on effectively exporting YouTube cookies\n" 14:13:59.960 [error] yt-dlp download will not be retried: "ERROR: [youtube] bhkmFO8DikY: Sign in to confirm your age. This video may be inappropriate for some users. Use --cookies-from-browser or --cookies for the authentication. See https://github.com/yt-dlp/yt-dlp/wiki/FAQ#how-do-i-pass-cookies-to-yt-dlp for how to manually pass cookies. Also see https://github.com/yt-dlp/yt-dlp/wiki/Extractors#exporting-youtube-cookies for tips on effectively exporting YouTube cookies\n" 14:13:59.961 [info] {"args":{"id":8380},"id":203089,"meta":{},"state":"success","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":10847105,"event":"job:stop","queue_time":107777,"attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 14:13:59.969 [info] {"args":{"id":8418},"id":203091,"meta":{},"system_time":1767410039969479827,"max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 14:13:59.970 [debug] QUERY OK source="media_items" db=0.3ms queue=0.1ms idle=136.4ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [8418] 14:13:59.971 [info] User scripts lifecyle file either not present or is empty. Skipping. 14:13:59.972 [debug] QUERY OK source="sources" db=0.4ms queue=0.2ms idle=137.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [7] 14:13:59.973 [debug] QUERY OK source="media_profiles" db=0.6ms queue=0.1ms idle=137.3ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 14:13:59.975 [debug] QUERY OK source="media_items" db=0.6ms queue=0.1ms idle=12.9ms SELECT 1 FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) LIMIT 1 [8418] 14:13:59.977 [debug] QUERY OK source="media_metadata" db=0.2ms idle=7.8ms SELECT m0."id", m0."metadata_filepath", m0."thumbnail_filepath", m0."media_item_id", m0."inserted_at", m0."updated_at", m0."media_item_id" FROM "media_metadata" AS m0 WHERE (m0."media_item_id" = ?) [8418] 14:13:59.978 [debug] QUERY OK source="media_profiles" db=0.4ms queue=0.1ms idle=7.1ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 14:13:59.980 [debug] QUERY OK source="settings" db=0.3ms idle=6.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:13:59.980 [debug] QUERY OK source="settings" db=0.4ms queue=0.1ms idle=6.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:13:59.981 [debug] Running yt-dlp command for action: get_downloadable_status 14:13:59.984 [debug] QUERY OK source="settings" db=0.4ms idle=8.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:13:59.985 [debug] QUERY OK source="settings" db=0.6ms queue=0.1ms idle=6.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:13:59.985 [debug] QUERY OK source="settings" db=0.3ms idle=6.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:13:59.986 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=v6jHhzj08yQ --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/2e/20/2e209a7193b2379689f7e42f63471347f31e684b2ba8be909fec824c9a380d11.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:14:00.232 [info] {"source":"oban","duration":485,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 14:14:05.000 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=ZWSj0M132e8 --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/f2/0d/f20d7e9e6de244261672e1ab51ed2b60e8afe18f5aa1dbdca70b833e5b67661a.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 1 with: ERROR: [youtube] ZWSj0M132e8: Sign in to confirm your age. This video may be inappropriate for some users. Use --cookies-from-browser or --cookies for the authentication. See https://github.com/yt-dlp/yt-dlp/wiki/FAQ#how-do-i-pass-cookies-to-yt-dlp for how to manually pass cookies. Also see https://github.com/yt-dlp/yt-dlp/wiki/Extractors#exporting-youtube-cookies for tips on effectively exporting YouTube cookies 14:14:05.002 [debug] QUERY OK source="settings" db=1.3ms idle=1619.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:14:05.003 [debug] QUERY OK source="settings" db=0.4ms queue=0.1ms idle=1621.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:14:05.004 [debug] Running yt-dlp command for action: get_downloadable_status 14:14:05.006 [debug] QUERY OK source="settings" db=0.2ms idle=1623.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:14:05.006 [debug] QUERY OK source="settings" db=0.4ms idle=1260.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:14:05.007 [debug] QUERY OK source="settings" db=0.2ms idle=257.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:14:05.007 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=ZWSj0M132e8 --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/8f/d0/8fd0542619eeb476e9e14465d53315e0518b6f033804ad2c44cb63ced1c88bab.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:14:05.224 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=v6jHhzj08yQ --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/2e/20/2e209a7193b2379689f7e42f63471347f31e684b2ba8be909fec824c9a380d11.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 1 with: ERROR: [youtube] v6jHhzj08yQ: Sign in to confirm your age. This video may be inappropriate for some users. Use --cookies-from-browser or --cookies for the authentication. See https://github.com/yt-dlp/yt-dlp/wiki/FAQ#how-do-i-pass-cookies-to-yt-dlp for how to manually pass cookies. Also see https://github.com/yt-dlp/yt-dlp/wiki/Extractors#exporting-youtube-cookies for tips on effectively exporting YouTube cookies 14:14:05.225 [debug] QUERY OK source="settings" db=0.3ms queue=0.1ms idle=222.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:14:05.226 [debug] QUERY OK source="settings" db=0.3ms idle=222.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:14:05.226 [debug] Running yt-dlp command for action: get_downloadable_status 14:14:05.228 [debug] QUERY OK source="settings" db=0.4ms idle=221.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:14:05.229 [debug] QUERY OK source="settings" db=0.3ms idle=221.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:14:05.229 [debug] QUERY OK source="settings" db=0.4ms idle=221.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:14:05.230 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=v6jHhzj08yQ --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/de/99/de99fe6b6785ff3df5fcfd66bc86322bdd9b7822706ef98521bc553bf1bc8cd3.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:14:08.537 [info] GET /sources/13/media/12734/force_download 14:14:08.538 [debug] QUERY OK source="settings" db=0.5ms queue=0.1ms idle=777.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:14:08.539 [debug] QUERY OK source="settings" db=0.2ms queue=0.1ms idle=156.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:14:08.539 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 14:14:08.540 [error] #PID<0.11050.0> running PinchflatWeb.Endpoint (connection #PID<0.11049.0>, stream id 1) terminated Server: pinchflat.uiau7e.uncld.dev:80 (http) Request: GET /sources/13/media/12734/force_download ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/13/media/12734/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.11049.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/13/media/12734/force_download", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 43286}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "from" => "gptbot(at)openai.com", "host" => "pinchflat.uiau7e.uncld.dev", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.3; +https://openai.com/gptbot)", "via" => "2.0 Caddy", "x-forwarded-for" => "74.7.227.183", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https", "x-openai-host-hash" => "454925582" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.uiau7e.uncld.dev", method: "GET", owner: #PID<0.11050.0>, params: %{}, path_info: ["sources", "13", "media", "12734", "force_download"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.uiau7e.uncld.dev", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {10, 210, 0, 2}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"accept-encoding", "gzip, br, deflate"}, {"from", "gptbot(at)openai.com"}, {"host", "pinchflat.uiau7e.uncld.dev"}, {"user-agent", "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.3; +https://openai.com/gptbot)"}, {"via", "2.0 Caddy"}, {"x-forwarded-for", "74.7.227.183"}, {"x-forwarded-host", "pinchflat.uiau7e.uncld.dev"}, {"x-forwarded-proto", "https"}, {"x-openai-host-hash", "454925582"} ], request_path: "/sources/13/media/12734/force_download", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GIcaEzOBQN1MKkcAAhCB"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.11049.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/13/media/12734/force_download", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 43286}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "from" => "gptbot(at)openai.com", "host" => "pinchflat.uiau7e.uncld.dev", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.3; +https://openai.com/gptbot)", "via" => "2.0 Caddy", "x-forwarded-for" => "74.7.227.183", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https", "x-openai-host-hash" => "454925582" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/13/media/12734/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.11049.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/13/media/12734/force_download", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 43286}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "from" => "gptbot(at)openai.com", "host" => "pinchflat.uiau7e.uncld.dev", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.3; +https://openai.com/gptbot)", "via" => "2.0 Caddy", "x-forwarded-for" => "74.7.227.183", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https", "x-openai-host-hash" => "454925582" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.uiau7e.uncld.dev", method: "GET", owner: #PID<0.11050.0>, params: %{}, path_info: ["sources", "13", "media", "12734", "force_download"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.uiau7e.uncld.dev", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {10, 210, 0, 2}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"accept-en (truncated) 14:14:10.254 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=ZWSj0M132e8 --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/8f/d0/8fd0542619eeb476e9e14465d53315e0518b6f033804ad2c44cb63ced1c88bab.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 1 with: ERROR: [youtube] ZWSj0M132e8: Sign in to confirm your age. This video may be inappropriate for some users. Use --cookies-from-browser or --cookies for the authentication. See https://github.com/yt-dlp/yt-dlp/wiki/FAQ#how-do-i-pass-cookies-to-yt-dlp for how to manually pass cookies. Also see https://github.com/yt-dlp/yt-dlp/wiki/Extractors#exporting-youtube-cookies for tips on effectively exporting YouTube cookies 14:14:10.254 [error] yt-dlp download error for media item #8401: "ERROR: [youtube] ZWSj0M132e8: Sign in to confirm your age. This video may be inappropriate for some users. Use --cookies-from-browser or --cookies for the authentication. See https://github.com/yt-dlp/yt-dlp/wiki/FAQ#how-do-i-pass-cookies-to-yt-dlp for how to manually pass cookies. Also see https://github.com/yt-dlp/yt-dlp/wiki/Extractors#exporting-youtube-cookies for tips on effectively exporting YouTube cookies\n" 14:14:10.255 [error] yt-dlp download will not be retried: "ERROR: [youtube] ZWSj0M132e8: Sign in to confirm your age. This video may be inappropriate for some users. Use --cookies-from-browser or --cookies for the authentication. See https://github.com/yt-dlp/yt-dlp/wiki/FAQ#how-do-i-pass-cookies-to-yt-dlp for how to manually pass cookies. Also see https://github.com/yt-dlp/yt-dlp/wiki/Extractors#exporting-youtube-cookies for tips on effectively exporting YouTube cookies\n" 14:14:10.256 [info] {"args":{"id":8401},"id":203090,"meta":{},"state":"success","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":10438641,"event":"job:stop","queue_time":10812783,"attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 14:14:10.649 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=v6jHhzj08yQ --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/de/99/de99fe6b6785ff3df5fcfd66bc86322bdd9b7822706ef98521bc553bf1bc8cd3.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 1 with: ERROR: [youtube] v6jHhzj08yQ: Sign in to confirm your age. This video may be inappropriate for some users. Use --cookies-from-browser or --cookies for the authentication. See https://github.com/yt-dlp/yt-dlp/wiki/FAQ#how-do-i-pass-cookies-to-yt-dlp for how to manually pass cookies. Also see https://github.com/yt-dlp/yt-dlp/wiki/Extractors#exporting-youtube-cookies for tips on effectively exporting YouTube cookies 14:14:10.649 [error] yt-dlp download error for media item #8418: "ERROR: [youtube] v6jHhzj08yQ: Sign in to confirm your age. This video may be inappropriate for some users. Use --cookies-from-browser or --cookies for the authentication. See https://github.com/yt-dlp/yt-dlp/wiki/FAQ#how-do-i-pass-cookies-to-yt-dlp for how to manually pass cookies. Also see https://github.com/yt-dlp/yt-dlp/wiki/Extractors#exporting-youtube-cookies for tips on effectively exporting YouTube cookies\n" 14:14:10.649 [error] yt-dlp download will not be retried: "ERROR: [youtube] v6jHhzj08yQ: Sign in to confirm your age. This video may be inappropriate for some users. Use --cookies-from-browser or --cookies for the authentication. See https://github.com/yt-dlp/yt-dlp/wiki/FAQ#how-do-i-pass-cookies-to-yt-dlp for how to manually pass cookies. Also see https://github.com/yt-dlp/yt-dlp/wiki/Extractors#exporting-youtube-cookies for tips on effectively exporting YouTube cookies\n" 14:14:10.650 [info] {"args":{"id":8418},"id":203091,"meta":{},"state":"success","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":10680429,"event":"job:stop","queue_time":10967835,"attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 14:14:13.007 [info] {"source":"oban","duration":1838,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:14:38.852 [info] {"args":{"id":3},"id":203070,"meta":{},"system_time":1767410078852454376,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 14:14:38.853 [debug] QUERY OK source="sources" db=0.8ms idle=470.8ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [3] 14:14:38.854 [debug] QUERY OK source="settings" db=0.6ms idle=471.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:14:38.855 [debug] QUERY OK source="media_profiles" db=0.6ms idle=472.7ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 14:14:38.856 [debug] QUERY OK source="settings" db=0.5ms queue=0.1ms idle=11.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:14:38.856 [debug] Fetching recent media IDs from YouTube API for playlist: UUISrVZmDM4x-Rq9mmNUw7Zw 14:14:38.857 [debug] QUERY OK source="settings" db=0.3ms queue=0.2ms idle=4.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:14:38.858 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 14:14:39.319 [debug] QUERY OK source="media_items" db=4.6ms idle=460.9ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND m0."media_id" IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [3, "MQ2cHq3-J7A", "CtF5dLHITYA", "SGJkxRdkRGg", "OUCt85aJaAA", "9gARPYZOka4", "-uH-Gi5tjEw", "qwUBBQKYX94", "s8VLDSQJ8nA", "EvPfr0lKkh4", "msXzAxF49gA", "hQCWaSvjkU0", "RcmjVsy3a-g", "xtuNc9vYJG4", "fj2tcg8OzsM", "2FZ4IfPACDM", "2Q9DzW20YJ8", "IVsWFGOE_mw", "vPxpMcv2Z4Y", "Zverj_ldlhY", "pQK8xasPd9Q", "_Yo7nh8u9pk", "4HzltsOvc0A", "a8UBLMm71JY", "3vqbr7-6Twk", "Df0iVjAKJZw", "n-X-AJpHUyI", "4CV7jI0e0Hw", "nqPoocCKci8", "5IIOdWnJGxg", "jkPL8BaM4ko", "CzeQtnRmUZ0", "9u-0d2IVZ3I", "igtvNmqsKM0", "47XDpW4nOzk", "8xvd7xSLQOo", "PnQPZMN0kIY", "feDph2WgRfI", "Z5FZ2XfX4Uc", "e0DxPopyrqM", "YvaK-Tjp2ck", "6_CctUPWX4I", "_DzHKw8yK58", "VnAkeiehyCg", "EFW1iCguDV8", "CEj7B1VzUwU", "3cy5fWUssjQ", "ZnjoTYmqLhs", "5IxtizzvaWw", "ZnBsMRl-EL0", ...] 14:14:39.323 [debug] QUERY OK source="settings" db=0.2ms idle=468.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:14:39.324 [debug] QUERY OK source="settings" db=0.1ms idle=468.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:14:39.324 [debug] Running yt-dlp command for action: get_media_attributes 14:14:39.325 [debug] QUERY OK source="settings" db=0.1ms idle=469.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:14:39.326 [debug] QUERY OK source="settings" db=0.1ms idle=468.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:14:39.327 [debug] QUERY OK source="settings" db=0.3ms idle=7.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:14:39.327 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=MQ2cHq3-J7A --simulate --skip-download --output /downloads/Blondie in China/Season %(upload_date>%Y)S/s%(upload_date>%Y)Se%(upload_date>%m%d)S00 - %(title)S.%(ext)S --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --print-to-file %(.{id,title,live_status,original_url,description,aspect_ratio,duration,upload_date,timestamp,playlist_index,filename})j /tmp/pinchflat/data/a9/35/a935e6c4549770bab397ac6892a3ababe6fcc120a7b071642cf3eb7170441a1b.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:14:43.010 [info] {"source":"oban","duration":2123,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:14:46.180 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=MQ2cHq3-J7A --simulate --skip-download --output /downloads/Blondie in China/Season %(upload_date>%Y)S/s%(upload_date>%Y)Se%(upload_date>%m%d)S00 - %(title)S.%(ext)S --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --print-to-file %(.{id,title,live_status,original_url,description,aspect_ratio,duration,upload_date,timestamp,playlist_index,filename})j /tmp/pinchflat/data/a9/35/a935e6c4549770bab397ac6892a3ababe6fcc120a7b071642cf3eb7170441a1b.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:14:46.182 [debug] QUERY OK source="sources" db=1.1ms idle=1799.3ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [3] 14:14:46.189 [debug] QUERY OK source="media_items" db=6.5ms idle=1800.9ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2026-01-03 03:13:35Z], 3] 14:14:46.722 [debug] QUERY OK source="media_items" db=531.8ms idle=1808.0ms INSERT INTO "media_items" AS m0 ("title","uuid","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","prevent_download","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["You won’t believe China’s CREAMY strawberries", "e3301fd1-55fb-4a04-852b-c4f7d9350967", 54, false, "MQ2cHq3-J7A", "https://www.youtube.com/watch?v=MQ2cHq3-J7A", 0, "/downloads/Blondie in China/Season 2026/s2026e010300 - You won’t believe China’s CREAMY strawberries.mp4", false, false, true, 3, [], 99, ~U[2026-01-03 03:13:35Z], ~U[2026-01-03 03:14:46Z], ~U[2026-01-03 03:14:46Z], "", "You won’t believe China’s CREAMY strawberries", 54, false, "MQ2cHq3-J7A", "https://www.youtube.com/watch?v=MQ2cHq3-J7A", "/downloads/Blondie in China/Season 2026/s2026e010300 - You won’t believe China’s CREAMY strawberries.mp4", true, 3, ~U[2026-01-03 03:13:35Z]] 14:14:46.724 [debug] QUERY OK source="sources" db=1.3ms idle=856.5ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [3] 14:14:46.726 [debug] QUERY OK source="media_profiles" db=0.9ms queue=0.1ms idle=542.5ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 14:14:46.728 [debug] QUERY OK source="media_items" db=1.7ms idle=537.4ms SELECT 1 FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) LIMIT 1 [59580] 14:14:46.733 [debug] QUERY OK source="media_items" db=4.2ms queue=0.1ms idle=347.1ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [3] 14:14:46.734 [debug] QUERY OK source="sources" db=0.4ms idle=11.9ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [3] 14:14:46.734 [debug] QUERY OK source="media_profiles" db=0.2ms idle=10.3ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 14:14:46.735 [debug] QUERY OK source="media_items" db=0.6ms idle=9.1ms SELECT 1 FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) LIMIT 1 [59580] 14:14:46.738 [debug] QUERY OK source="tasks" db=0.4ms idle=3.7ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [203094, 3, ~U[2026-01-03 03:14:46Z], ~U[2026-01-03 03:14:46Z]] 14:14:46.739 [info] {"args":{"id":3},"id":203070,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":7886175,"event":"job:stop","queue_time":410850,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 14:14:52.896 [info] {"args":{"id":1},"id":203071,"meta":{},"system_time":1767410092896451679,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 14:14:52.897 [debug] QUERY OK source="sources" db=0.3ms idle=515.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 14:14:52.898 [debug] QUERY OK source="settings" db=0.2ms idle=515.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:14:52.898 [debug] QUERY OK source="media_profiles" db=0.2ms idle=516.3ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 14:14:52.899 [debug] QUERY OK source="settings" db=0.3ms queue=0.1ms idle=9.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:14:52.899 [debug] Fetching recent media IDs from YouTube API for playlist: UU54SLBnD5k5U3Q6N__UjbAw 14:14:52.900 [debug] QUERY OK source="settings" db=0.1ms queue=0.1ms idle=3.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:14:52.900 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 14:14:53.301 [debug] QUERY OK source="media_items" db=4.5ms idle=399.0ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND m0."media_id" IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [1, "UYCKIroDVBY", "ynOiaE9f6NY", "At_WjGosTNM", "_s7ZzdPoVZE", "ulhKFEKXIEI", "YpQ2jupcrHk", "PetMnG6cCDw", "VdxlXCnA1DM", "uj2s7HZQigU", "rZ7Y_gPAHig", "LTmK8Ab6IFE", "sZKNVGI8xt0", "_PUZIf6VQto", "J2-1ZErtS7A", "OEyptSEM5Tw", "HLeY2_hJvRk", "DkZ5uXcDxjc", "zPWe_aBuNfM", "PZN18led4ok", "66F09ebI9gw", "Pfok4B_xyaI", "e5HEGCCadBU", "hYFsHfPquPg", "nKsnfEB29ek", "OpDh_O473Ms", "ZTtZ12XtQpg", "TphXloX3PEI", "4Qhp4VPP2Wo", "J5l7jvbp3u8", "uL_YQMkkbUg", "SAZ17l0EwxI", "fTa_T2pVwuk", "6HpTVfX0SvI", "XlIWsRyXL8U", "nM1GQNJU6LQ", "WVN1LNy1zgo", "0Fxf6_q7qHc", "dL0KPsy-Dww", "G43wJ7YyWzM", "yVy89TnL9Zg", "BR1VRJDu-gc", "-2HeoqiMC6s", "7WXyx51z5G8", "jCk-9S8PQyc", "vGEIHv1XelY", "rOI7HYGGHpo", "gNeGHhU6UaI", "gUlkwSHOT7Q", "tpf7TxliCxA", ...] 14:14:53.305 [debug] QUERY OK source="media_items" db=2.2ms idle=404.9ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [1] 14:14:53.307 [debug] QUERY OK source="tasks" db=0.4ms idle=406.9ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [203095, 1, ~U[2026-01-03 03:14:53Z], ~U[2026-01-03 03:14:53Z]] 14:14:53.308 [info] {"args":{"id":1},"id":203071,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":411502,"event":"job:stop","queue_time":422880,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 14:14:59.918 [info] {"args":{"id":22},"id":203072,"meta":{},"system_time":1767410099918288483,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 14:14:59.919 [debug] QUERY OK source="sources" db=0.3ms queue=0.1ms idle=1537.1ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [22] 14:14:59.920 [debug] QUERY OK source="settings" db=0.2ms queue=0.1ms idle=1538.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:14:59.921 [debug] QUERY OK source="media_profiles" db=0.3ms queue=0.1ms idle=1014.2ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 14:14:59.922 [debug] QUERY OK source="settings" db=0.3ms queue=0.1ms idle=11.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:14:59.922 [debug] Fetching recent media IDs from YouTube API for playlist: UUP1RHyOhO98Yn2rMbDBirxA 14:14:59.923 [debug] QUERY OK source="settings" db=0.2ms queue=0.1ms idle=4.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:14:59.923 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 14:15:00.233 [debug] QUERY OK source="media_items" db=1.1ms idle=312.6ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND m0."media_id" IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [22, "N5RzDzO54gQ", "5glegyagphQ", "VtiV_RfFqNM", "qNYyH7bMcbI", "MPdiQsg_zQ8", "4-VOc2Aich8", "gMrBK9rp6As", "p0lqYk8_uMI", "aKpQHxUiwxc", "KsuhL0zVo3I", "pCJcoGDsbxc", "_5AR-GKeqlk", "VcJG7rIOjb0", "vRzAE_0VnXQ", "uj_bcWLWMtw", "xRyiudwo_jM", "pTMRT4CRUoM", "W8_LEBSOsPg", "YZuP7d99kCw"] 14:15:00.234 [info] {"source":"oban","duration":396,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 14:15:00.235 [debug] QUERY OK source="settings" db=0.3ms idle=313.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:15:00.235 [debug] QUERY OK source="settings" db=0.3ms idle=313.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:15:00.235 [debug] Running yt-dlp command for action: get_media_attributes 14:15:00.237 [debug] QUERY OK source="settings" db=0.2ms idle=313.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:15:00.238 [debug] QUERY OK source="settings" db=0.3ms queue=0.1ms idle=4.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:15:00.238 [debug] QUERY OK source="settings" db=0.5ms idle=3.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:15:00.239 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=gMrBK9rp6As --simulate --skip-download --output /downloads/White Raven/Season %(upload_date>%Y)S/s%(upload_date>%Y)Se%(upload_date>%m%d)S00 - %(title)S.%(ext)S --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --print-to-file %(.{id,title,live_status,original_url,description,aspect_ratio,duration,upload_date,timestamp,playlist_index,filename})j /tmp/pinchflat/data/13/e0/13e0686dd202ae309ec3065e22f94a3d75ac6ff31a18d4e4263761271e23c5cf.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:15:04.644 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=gMrBK9rp6As --simulate --skip-download --output /downloads/White Raven/Season %(upload_date>%Y)S/s%(upload_date>%Y)Se%(upload_date>%m%d)S00 - %(title)S.%(ext)S --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --print-to-file %(.{id,title,live_status,original_url,description,aspect_ratio,duration,upload_date,timestamp,playlist_index,filename})j /tmp/pinchflat/data/13/e0/13e0686dd202ae309ec3065e22f94a3d75ac6ff31a18d4e4263761271e23c5cf.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 1 with: ERROR: [youtube] gMrBK9rp6As: Offline. 14:15:04.644 [error] Error creating media item 'gMrBK9rp6As' from URL: {:error, "ERROR: [youtube] gMrBK9rp6As: Offline.\n", 1} 14:15:04.645 [debug] QUERY OK source="media_items" db=0.6ms queue=0.1ms idle=1263.3ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [22] 14:15:04.648 [debug] QUERY OK source="tasks" db=0.3ms idle=1265.7ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [203096, 22, ~U[2026-01-03 03:15:04Z], ~U[2026-01-03 03:15:04Z]] 14:15:04.648 [info] {"args":{"id":22},"id":203072,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":4729872,"event":"job:stop","queue_time":1006408,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 14:15:08.735 [info] GET /sources/23/media/21400 14:15:08.735 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "21400", "source_id" => "23"} Pipelines: [:browser] 14:15:08.736 [debug] QUERY OK source="media_items" db=0.4ms queue=0.1ms idle=805.3ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [21400] 14:15:08.738 [debug] QUERY OK source="tasks" db=0.5ms queue=0.1ms idle=355.3ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [21400] 14:15:08.738 [debug] QUERY OK source="sources" db=0.9ms idle=355.5ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [23] 14:15:08.739 [debug] QUERY OK source="settings" db=0.5ms idle=357.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:15:08.740 [debug] QUERY OK source="settings" db=0.6ms queue=0.1ms idle=357.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:15:08.741 [debug] QUERY OK source="settings" db=0.4ms idle=4.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:15:08.743 [debug] QUERY OK source="media_profiles" db=0.6ms idle=4.6ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 14:15:08.765 [info] Sent 200 in 30ms 14:15:13.013 [info] {"source":"oban","duration":2654,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:15:13.957 [info] {"args":{"id":2},"id":203073,"meta":{},"system_time":1767410113957021127,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 14:15:13.958 [debug] QUERY OK source="sources" db=0.6ms idle=1575.2ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [2] 14:15:13.958 [debug] QUERY OK source="settings" db=0.2ms idle=1011.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:15:13.959 [debug] QUERY OK source="media_profiles" db=0.5ms idle=945.3ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 14:15:13.959 [debug] QUERY OK source="settings" db=0.2ms idle=9.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:15:13.960 [debug] Fetching recent media IDs from YouTube API for playlist: UUeE3lj6pLX_gCd0Yvns517Q 14:15:13.960 [debug] QUERY OK source="settings" db=0.1ms idle=3.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:15:13.960 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 14:15:14.544 [debug] QUERY OK source="media_items" db=6.9ms idle=579.2ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND m0."media_id" IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [2, "0k6I__61QDc", "tAnxIOSrasI", "qGmURDZnDhc", "vBsPoGzQPxA", "TiJoEoREmdE", "C-CkKUyzQhA", "K1UWf6n1FmY", "9VKS1P-aXSc", "kt_SNpPa2w4", "oaXa30IfZMc", "pUBcfLBwPXw", "WkG24B0xw1E", "fBQxlA3KI5U", "HbeqOllBS9o", "li1fOq_qqHM", "rsqGEZeczYw", "d7HFMZOp0S4", "oipxUVJUZrc", "cTxE_oPyD9Q", "yJlKrUX8Bvk", "pYtoIdfLeHA", "qPMGKmyQ1AA", "7W651YDFjhc", "EfUXdMBXauI", "804ky1qeBuE", "DRMng-9g9Ng", "Nzp4LPVF_7M", "1psbOjlzkyA", "IwMM9c9Q0Pw", "xhbzG8V0eSA", "-CSyf5_q-XQ", "C__g4XPdYRY", "7-FRyPsqWG0", "0-fliBPsvZI", "xLZYbjMl3hY", "qs36351JQys", "-aty2xx6kTI", "Ty7NA3HvUsk", "w6xdmHLxzSM", "-5YmR5lvMlQ", "fFbRmFdCoYc", "XkPAB-oXAoU", "rTecGGMrRKc", "tHjU0F1najQ", "Z6otzigVvWM", "9m36Ncgctbg", "B1KUJbbpoK0", "rqGLjKlA_tM", "PZDZuoa3kJE", ...] 14:15:14.555 [debug] QUERY OK source="media_items" db=6.6ms queue=0.1ms idle=589.4ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [2] 14:15:14.558 [debug] QUERY OK source="tasks" db=0.5ms idle=597.7ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [203097, 2, ~U[2026-01-03 03:15:14Z], ~U[2026-01-03 03:15:14Z]] 14:15:14.559 [info] {"args":{"id":2},"id":203073,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":601819,"event":"job:stop","queue_time":439836,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 14:15:43.017 [info] {"source":"oban","duration":3753,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:16:00.235 [info] {"source":"oban","duration":376,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 14:16:10.100 [info] {"args":{"id":26},"id":203074,"meta":{},"system_time":1767410170100073557,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 14:16:10.101 [debug] QUERY OK source="sources" db=0.4ms idle=1718.7ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [26] 14:16:10.101 [debug] QUERY OK source="settings" db=0.3ms idle=1011.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:16:10.102 [debug] QUERY OK source="media_profiles" db=0.7ms idle=720.2ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 14:16:10.103 [debug] QUERY OK source="settings" db=0.3ms idle=9.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:16:10.103 [debug] Fetching recent media IDs from YouTube API for playlist: UU6NY7eg1FxCfAVX58yL0cJw 14:16:10.104 [debug] QUERY OK source="settings" db=0.4ms idle=3.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:16:10.104 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 14:16:10.603 [debug] QUERY OK source="media_items" db=4.0ms idle=498.2ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND m0."media_id" IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [26, "o2tiLxanOd0", "3Hkalon06bY", "acwCbVzHnRM", "m3Cddar422Y", "QItYx18RK4M", "iFrwlymvtTM", "CBKzBKWhNmE", "twi0ZP1ZWew", "MChkfGtdrgI", "usOf_0SOPl8", "7CamgxCV_lg", "CYW3qAtbiSg", "hkLPA0MEUFk", "Z9APq63an58", "MA2a2BtDQtE", "a23hasz0yk8", "o4tK4PhiK_c", "2-lUv1_A_KU", "W6GGXQ4xVdg", "TOIuoWmEqxo", "JRXSDo6asDk", "iAodr4mipf0", "12wArTNB9dk", "CFZ0TtEbofU", "RwW6yAVtf6Q", "9RshF2jpgLo", "MV8U7XQUpnY", "G0o-l5G0M4s", "FVOkr5w0O0I", "1IFJive9Bvc", "kuc2kAgYD8M", "jHOE86EMHvA", "CjuPAweX08c", "LH0RNHxukJs", "o6OxlF4vAuw", "Qxfr7h-PzdA", "xU_1w6OSnac", "-6G1TNBxp08", "o-ripoq_oXU", "Uevcwu2GLMs", "BAoXgNQ_wRI", "p4NWPk9B20I", "XKxqsR_4w_I", "BNtAWc-vLX4", "ktw-dS-26Gk", "Idbcu-oVtDs", "JCxqgAhaJj4", "A0vzWxUO5TA", "6M0wfDl0LEI", ...] 14:16:10.613 [debug] QUERY OK source="media_items" db=8.4ms idle=503.3ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [26] 14:16:10.618 [debug] QUERY OK source="tasks" db=0.8ms idle=513.1ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [203098, 26, ~U[2026-01-03 03:16:10Z], ~U[2026-01-03 03:16:10Z]] 14:16:10.619 [info] {"args":{"id":26},"id":203074,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":518203,"event":"job:stop","queue_time":265231,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 14:16:12.090 [info] GET /sources/17/media/50561 14:16:12.090 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "50561", "source_id" => "17"} Pipelines: [:browser] 14:16:12.092 [debug] QUERY OK source="media_items" db=1.1ms queue=0.1ms idle=1473.8ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [50561] 14:16:12.093 [debug] QUERY OK source="tasks" db=0.6ms idle=1474.6ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [50561] 14:16:12.094 [debug] QUERY OK source="sources" db=1.0ms idle=1473.8ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [17] 14:16:12.095 [debug] QUERY OK source="settings" db=0.3ms idle=1467.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:16:12.095 [debug] QUERY OK source="settings" db=0.5ms idle=998.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:16:12.096 [debug] QUERY OK source="settings" db=0.4ms idle=4.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:16:12.098 [debug] QUERY OK source="media_profiles" db=0.7ms idle=4.2ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 14:16:12.117 [info] Sent 200 in 26ms 14:16:13.021 [info] {"source":"oban","duration":2925,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:16:43.025 [info] {"source":"oban","duration":2774,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:16:44.210 [info] {"args":{"id":6},"id":203075,"meta":{},"system_time":1767410204210435183,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 14:16:44.211 [debug] QUERY OK source="sources" db=0.4ms idle=1014.4ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [6] 14:16:44.212 [debug] QUERY OK source="settings" db=0.3ms queue=0.1ms idle=830.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:16:44.213 [debug] QUERY OK source="media_profiles" db=0.3ms idle=830.8ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 14:16:44.213 [debug] QUERY OK source="settings" db=0.3ms idle=10.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:16:44.214 [debug] Fetching recent media IDs from YouTube API for playlist: UUg0m_Ah8P_MQbnn77-vYnYw 14:16:44.214 [debug] QUERY OK source="settings" db=0.3ms idle=4.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:16:44.214 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 14:16:44.540 [debug] QUERY OK source="media_items" db=3.2ms idle=324.7ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND m0."media_id" IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [6, "9i6Qm3LV89c", "2PC3HH4izX4", "dJLpdoPNdZ8", "lqRHAbkn9bo", "nlYgNjtr904", "uHKLZ8LcCJA", "V3LW3EWUxqE", "XaTvV6zJEXk", "AjnHxtnxMhk", "vuJTLm11QmQ", "vUzRuvCi6lw", "NlxSd2y_gfI", "ivcFXtMGdE8", "m17ugzx_Ab4", "o5QiLKbHeMI", "moqdU9sMrRk", "Yi55tGTEMqQ", "rHliVvnQ5Pg", "nCZSTFM-v9k", "uasm2RENDH4", "musiLNtEyRY", "uSvqlME0IsI", "Yo0hmtg8LNc", "HOFD3h9Up9w", "uibJMXaSB7c", "NGq1EoY_r2I", "IL-UZlbO3zI", "-_txeeBP6dg", "iH7BiZvsczM", "rIKuiZVHfZo", "HRw20b6hb_s", "xOQPha-de4A", "L6IXwj-_X1k", "_7--BDD2pxk", "Xaq53-12iW8", "bfb-ZBwdvpo", "3DLbHio3ivA", "xhpwyar65ms", "UzEr8RISXds", "tHU6PeO4WDs", "2z1AaBGzA1g", "y-t3hyj7Mz8", "5ZUXEQ6d0dM", "pn8GF5HaKZc", "wH3XASrC2DA", "C_oeOAG0G5E", "c8gYHg1lZCg", "cPEXUpZ6CWk", "jST7T0L_k_w", ...] 14:16:44.546 [debug] QUERY OK source="media_items" db=2.4ms idle=331.8ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [6] 14:16:44.550 [debug] QUERY OK source="tasks" db=0.4ms idle=334.9ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [203099, 6, ~U[2026-01-03 03:16:44Z], ~U[2026-01-03 03:16:44Z]] 14:16:44.551 [info] {"args":{"id":6},"id":203075,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":339916,"event":"job:stop","queue_time":168611,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 14:17:00.236 [info] {"source":"oban","duration":930,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 14:17:08.286 [info] {"args":{"id":9},"id":203076,"meta":{},"system_time":1767410228285886410,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 14:17:08.287 [debug] QUERY OK source="sources" db=0.7ms queue=0.1ms idle=1904.4ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [9] 14:17:08.288 [debug] QUERY OK source="settings" db=0.6ms queue=0.1ms idle=1015.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:17:08.290 [debug] QUERY OK source="media_profiles" db=0.6ms queue=0.1ms idle=907.2ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 14:17:08.291 [debug] QUERY OK source="settings" db=0.7ms queue=0.1ms idle=12.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:17:08.291 [debug] Fetching recent media IDs from YouTube API for playlist: UUy0Pr5u-MwGXXzp_GDd4m_g 14:17:08.292 [debug] QUERY OK source="settings" db=0.4ms queue=0.1ms idle=6.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:17:08.292 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 14:17:08.757 [debug] QUERY OK source="media_items" db=5.1ms idle=463.9ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND m0."media_id" IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [9, "97DBlIPSMkI", "V7Q9VnfzRqE", "Nub2m3iioSw", "Tpk6NNZubqU", "L4Eh-MtBFFk", "sa8p75KJqOc", "2gpPC0vsry0", "B2l4YfAav6M", "iL1qKxcaZnU", "NH5AAcLn03o", "8fOaCUvVQpY", "8aQ7sJ9EyaY", "ld0ngHU3YQ0", "uKzsA5kc8jw", "_A1dxw_T6dw", "TFVA0Bc5ajA", "IgFSOa0RBxs", "fGAe2cenBhs", "a6_0p8e42Y4", "vnR7jnJYN-k", "db6_ragog48", "SMKDYoXrZzw", "-fM_uGwlRlU", "kRxJ2g3T0zs", "GgU7L-z0kbA", "yFZJ6Qb8mDY", "YkyTbtgcfJU", "k01ARI01oMU", "ToFKhGfGgc0", "MU8JlJIuwh4", "IY36QIh6VG8", "brtcZFHW0P4", "A39Glu9I9fk", "Ib_1jixUkLw", "c9UIDwF7oS4", "CcSE-YHRJP4", "Tpmb_mTKuhs", "yNbz6f5dMLE", "BAVQcOWZi-Y", "Fa7RxeYNUTw", "teIoBQdGT5s", "UqykI_3CT-g", "vBeWkDTK6Eg", "qOp_nyKqmic", "fEqSlPpXHYk", "lII4lxNpPVg", "BaxD8BI3wI4", "me_afppRbyI", "C69B2k3fAvs", ...] 14:17:08.768 [debug] QUERY OK source="media_items" db=6.6ms idle=473.1ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [9] 14:17:08.773 [debug] QUERY OK source="tasks" db=0.8ms idle=480.5ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [203100, 9, ~U[2026-01-03 03:17:08Z], ~U[2026-01-03 03:17:08Z]] 14:17:08.774 [info] {"args":{"id":9},"id":203076,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":488163,"event":"job:stop","queue_time":373607,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 14:17:09.717 [info] GET /media/7ceae944-48c9-485c-8e3d-e7c84b78130a/stream 14:17:09.718 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.stream/2 Parameters: %{"uuid" => "7ceae944-48c9-485c-8e3d-e7c84b78130a", "v" => "1762567438"} Pipelines: [:maybe_basic_auth] 14:17:09.720 [debug] QUERY OK source="media_items" db=1.6ms idle=945.3ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."uuid" = ?) ["7ceae944-48c9-485c-8e3d-e7c84b78130a"] 14:17:09.774 [debug] Invalid range request for media item: 7ceae944-48c9-485c-8e3d-e7c84b78130a - serving full file 14:17:09.774 [info] Sent 200 in 57ms 14:17:10.292 [info] {"args":{"id":10},"id":203077,"meta":{},"system_time":1767410230292723041,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 14:17:10.294 [debug] QUERY OK source="sources" db=0.7ms idle=1509.9ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [10] 14:17:10.294 [debug] QUERY OK source="settings" db=0.5ms idle=1013.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:17:10.295 [debug] QUERY OK source="media_profiles" db=0.7ms idle=575.0ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 14:17:10.296 [debug] QUERY OK source="settings" db=0.4ms idle=11.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:17:10.296 [debug] Fetching recent media IDs from YouTube API for playlist: UUmHz7DQbbkcY_UoWY8bBJLw 14:17:10.297 [debug] QUERY OK source="settings" db=0.3ms idle=4.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:17:10.297 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 14:17:10.652 [debug] QUERY OK source="media_items" db=5.0ms idle=352.7ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND m0."media_id" IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [10, "PhjtM9ePmYY", "BYRqpIciNLg", "KKoDQ42Fcpk", "AifAIqHezb8", "sjsS60OTXSQ", "KVouvdlUtGQ", "Th4RJNVZN3Q", "a9Zj-iWYC4w", "Z2_oFD9DMd0", "OW9WywZF_d4", "hFSwWzxrqUA", "XsPrNwyLDJM", "9NUcKPnPMEw", "GvP1jo9RstE", "8jul3DEwgMY", "e4K0Co-JeKQ", "wxoYf3KBlis", "YFQm8Hk73ug", "iu5rnQkfO6M", "RESslu3Bhuk", "vn9VDbacUgQ", "mLozqDnhqpQ", "GWXCCBsOMSg", "OXIpbrvFxfE", "hbZb1Q0mM7k", "lj2JTO1L1Tc", "dGjMw1SkmjU", "vBQFfmlTK_4", "91WqepC8kS0", "UUZfxQhKmfA", "aPsq5nqvhxg", "AJ7atBkisOU", "2fZ0nkP5dfo", "qKZXQGCLRJY", "F26dxTMmW10", "cYPuhhATDXc", "uLrOyIpjkZ8", "kDu56nXRqGQ", "I4lBTlClwww", "h23xksD0dN0", "SgameZUfeGo", "NPgbgiRJCxA", "-v88e4T8i_E", "HkgV_-nJOuE", "3h1vM0lIrpM", "gjExqY_iB38", "5ScP_aPBEiQ", "t5CkW-CKTZs", "gKKRYcy4BbU", ...] 14:17:10.656 [debug] QUERY OK source="settings" db=0.5ms idle=361.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:17:10.657 [debug] QUERY OK source="settings" db=0.3ms queue=0.1ms idle=361.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:17:10.657 [debug] Running yt-dlp command for action: get_media_attributes 14:17:10.659 [debug] QUERY OK source="settings" db=0.3ms idle=362.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:17:10.660 [debug] QUERY OK source="settings" db=0.3ms idle=362.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:17:10.661 [debug] QUERY OK source="settings" db=0.4ms queue=0.1ms idle=8.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:17:10.661 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=Z2_oFD9DMd0 --simulate --skip-download --output /downloads/Switch Angel/Season %(upload_date>%Y)S/s%(upload_date>%Y)Se%(upload_date>%m%d)S00 - %(title)S.%(ext)S --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --print-to-file %(.{id,title,live_status,original_url,description,aspect_ratio,duration,upload_date,timestamp,playlist_index,filename})j /tmp/pinchflat/data/84/e3/84e38945d85a2f7084fb134b8d8e3dd10cda13b5805dfd23a0b261149dfa7d63.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:17:13.028 [info] {"source":"oban","duration":1550,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:17:15.619 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=Z2_oFD9DMd0 --simulate --skip-download --output /downloads/Switch Angel/Season %(upload_date>%Y)S/s%(upload_date>%Y)Se%(upload_date>%m%d)S00 - %(title)S.%(ext)S --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --print-to-file %(.{id,title,live_status,original_url,description,aspect_ratio,duration,upload_date,timestamp,playlist_index,filename})j /tmp/pinchflat/data/84/e3/84e38945d85a2f7084fb134b8d8e3dd10cda13b5805dfd23a0b261149dfa7d63.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 1 with: ERROR: [youtube] Z2_oFD9DMd0: This live event will begin in a few moments. 14:17:15.619 [error] Error creating media item 'Z2_oFD9DMd0' from URL: {:error, "ERROR: [youtube] Z2_oFD9DMd0: This live event will begin in a few moments.\n", 1} 14:17:15.622 [debug] QUERY OK source="media_items" db=1.9ms idle=1238.1ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [10] 14:17:15.627 [debug] QUERY OK source="tasks" db=1.0ms queue=0.1ms idle=1244.5ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [203101, 10, ~U[2026-01-03 03:17:15Z], ~U[2026-01-03 03:17:15Z]] 14:17:15.628 [info] {"args":{"id":10},"id":203077,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":5335217,"event":"job:stop","queue_time":1004818,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 14:17:25.355 [info] {"args":{"id":11},"id":203078,"meta":{},"system_time":1767410245355669062,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 14:17:25.356 [debug] QUERY OK source="sources" db=0.5ms idle=1974.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [11] 14:17:25.357 [debug] QUERY OK source="settings" db=0.5ms queue=0.1ms idle=1975.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:17:25.359 [debug] QUERY OK source="media_profiles" db=0.7ms idle=1013.6ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 14:17:25.360 [debug] QUERY OK source="settings" db=0.7ms idle=11.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:17:25.360 [debug] Fetching recent media IDs from YouTube API for playlist: UUJ901NqoRaXMnIm7aOjLyuA 14:17:25.360 [debug] QUERY OK source="settings" db=0.3ms idle=4.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:17:25.361 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 14:17:25.901 [debug] QUERY OK source="media_items" db=2.5ms idle=541.4ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND m0."media_id" IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [11, "1ji7g8qZJ_4", "xP5WmZg7OMg", "HBoV87Jndh8", "-zpzRklxMEo", "9AX85j6Lp4M", "p2U9d4FWDaI", "hfT6XVSa2xE", "qBOKYwe8NzA", "Cf5jL5JNq7k", "bAV0y2acB9c", "XE6JvrChQ_Q", "Efv456Ks9ms", "qgiJ4C5s46U", "KaVC_mTFqHk", "M6gat-hai0I", "_xwFJzOtQv0", "Ao-M_YvfhXY", "SKHWQwf0ago", "gmuFtWZG3v8", "H4oeJ87TMt4", "rS2fDo6mhS8", "aOF6Pe_bTeI", "x8B3Z91qkoE", "fVvYTWAHoBQ", "8r6xqWTqcPQ", "k677A--BwGE", "CSTtrz8t1eg", "w6Ej3Iim4Ic", "jO8S8_KX6p0", "tslsVdOjWFM", "dckL2BCDYmQ", "E3N8_pRRtGM", "qeOEDUgy5xA", "MIPvNqPwMxc", "V2GelRPp5fg", "jWH5H6Y6T-A", "1ObIAwtqt9k", "yVdv1xVggZ4", "Pxpz4211gMI", "UEUAHI0AZu4", "gitCR-iTofw", "eTg2rHYqUZc", "QnOIm4U7Dzs", "RYNFRbP4OWQ", "R3kNCz120XM", "vMflt2fJZYw", "4DkhBa_L_4E", "4IqFTPw6Mzk", "AepfCktyPLk", ...] 14:17:25.909 [debug] QUERY OK source="media_items" db=5.6ms idle=545.4ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [11] 14:17:25.932 [debug] QUERY OK source="tasks" db=3.0ms idle=28.7ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [203102, 11, ~U[2026-01-03 03:17:25Z], ~U[2026-01-03 03:17:25Z]] 14:17:25.935 [info] {"args":{"id":11},"id":203078,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":577523,"event":"job:stop","queue_time":258324,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 14:17:43.031 [info] {"source":"oban","duration":2611,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:17:59.302 [info] GET /sources/11/media/59538 14:17:59.303 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "59538", "source_id" => "11"} Pipelines: [:browser] 14:17:59.305 [debug] QUERY OK source="media_items" db=1.0ms idle=1877.7ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [59538] 14:17:59.306 [debug] QUERY OK source="tasks" db=0.6ms queue=0.1ms idle=1804.0ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [59538] 14:17:59.306 [debug] QUERY OK source="sources" db=0.7ms idle=879.7ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [11] 14:17:59.308 [debug] QUERY OK source="settings" db=0.2ms idle=881.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:17:59.308 [debug] QUERY OK source="settings" db=0.3ms queue=0.1ms idle=803.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:17:59.310 [debug] QUERY OK source="settings" db=0.3ms idle=4.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:17:59.312 [debug] QUERY OK source="media_profiles" db=0.3ms idle=5.0ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 14:17:59.315 [info] Sent 200 in 12ms 14:18:00.238 [info] {"source":"oban","duration":687,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 14:18:04.534 [info] {"args":{"id":15},"id":203079,"meta":{},"system_time":1767410284533776009,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 14:18:04.535 [debug] QUERY OK source="sources" db=0.5ms queue=0.1ms idle=108.3ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [15] 14:18:04.536 [debug] QUERY OK source="settings" db=0.4ms queue=0.1ms idle=109.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:18:04.537 [debug] QUERY OK source="media_profiles" db=0.4ms queue=0.1ms idle=110.2ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 14:18:04.537 [debug] QUERY OK source="settings" db=0.4ms queue=0.1ms idle=10.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:18:04.538 [debug] Fetching recent media IDs from YouTube API for playlist: UU5qRAYQmCLx8hFGIiTWSQvA 14:18:04.538 [debug] QUERY OK source="settings" db=0.3ms queue=0.1ms idle=4.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:18:04.539 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 14:18:04.988 [debug] QUERY OK source="media_items" db=2.5ms idle=450.3ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND m0."media_id" IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [15, "EMmIdkwn6a4", "EBT3EIoJpDc", "P2j2jM33fbk", "KuYhCywx8JM", "EteM8YNAFu8", "-KN9sfrroJA", "35D6yzUQM8I", "pIqvmN8ePkc", "rR5RqL2cjPE", "B2mmx85ZIsE", "b-jTeTJ1ekk", "Qa4dYWqfgmg", "TZZgrQEsl4c", "hMFEigXIhgA", "yf8ozrYeFEk", "QoCmQRZKU_c", "Qa9rFTiItTE", "Kxw9tq49VBM", "aLj4QgEf7gQ", "-D7c5td5vhw", "UNJUpex0blc", "Afa2PJq3okY", "r9A1srY7LdU", "m6YZoOWrLlk", "RKSlnQcuZt4", "qEjkDPJmKIo", "fZirHVq8wp0", "jdB56zAMJgE", "F92Oe7JuDtI", "luEgOCX58gw", "9CkNfdQpsuo", "eC3Mv474A8c", "mq6lsIgLLqY", "Wqmn4OTW6Fw", "4yYMQFLVRNc", "TsdMEmH2Lsw", "HQeTYLxz6iY", "V-JtebgnFoM", "2cXS3i36Kh8", "wznCZtGitN8", "2tYVGxZMOiQ", "9bxljq6ljbE", "9hHVjpo_HDA", "w8bqGx4ZtYQ", "yFYGd9irJ5k", "WTfhL2-cT1U", "LCR3ZsqWhuo", "Tj09jojsiaM", "_GZvVqjqlM0", ...] 14:18:04.994 [debug] QUERY OK source="media_items" db=4.0ms idle=453.9ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [15] 14:18:04.997 [debug] QUERY OK source="tasks" db=0.3ms idle=457.7ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [203103, 15, ~U[2026-01-03 03:18:04Z], ~U[2026-01-03 03:18:04Z]] 14:18:04.998 [info] {"args":{"id":15},"id":203079,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":463549,"event":"job:stop","queue_time":421027,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 14:18:09.558 [info] {"args":{"id":18},"id":203080,"meta":{},"system_time":1767410289558520836,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 14:18:09.559 [debug] QUERY OK source="sources" db=0.4ms queue=0.1ms idle=1132.9ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [18] 14:18:09.560 [debug] QUERY OK source="settings" db=0.3ms queue=0.1ms idle=1133.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:18:09.561 [debug] QUERY OK source="media_profiles" db=0.4ms idle=1016.0ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 14:18:09.562 [debug] QUERY OK source="settings" db=0.4ms queue=0.1ms idle=11.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:18:09.562 [debug] Fetching recent media IDs from YouTube API for playlist: UUuisDAMnvHMYuLFRedMgmVw 14:18:09.563 [debug] QUERY OK source="settings" db=0.2ms queue=0.1ms idle=4.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:18:09.563 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 14:18:09.941 [debug] QUERY OK source="media_items" db=3.7ms idle=377.0ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND m0."media_id" IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [18, "mf2Em7F_qDM", "PjvBtlIGGQU", "EF_PO-pALOQ", "j9eh7huEF4A", "y3FGuwfGzL0", "ZWH_eu9wdUE", "UccWWifa8jA", "0L8xWydKOhk", "CkSloYV3ay4", "SkQ7ywGW2HY", "QM3qu001Xdk", "jOTurZWIEmw", "pojDco-WhA4", "GD19Y1VYBKY", "cvViWSBLu-U", "wXm5ocXv9ho", "uB1Tk9eXQbk", "I7vb-PGArW4", "0h9qvAA5dfQ", "7yx-SecBATo", "oj1ySj7TVJk", "dtTdjRB4Q4g", "mpfcVNb8Mhs", "D3MFnCKv2Mc", "458_RTLWN2E", "W26HiyQ5k1s", "w4NDxPYJs1I", "cxuEV05UN7U", "5cPjR5FVDOw", "nJhbZNSrP4c", "X9Eu7mui35E", "wrgZHIpa6F0", "JEN7jfNqy1A", "v31DYiS2LbY", "iJfD5wWLvuM", "qPVTMbiyPLE", "rM_nvsztYlw", "IoD1j3ZG-SQ", "DDnqxbWvIgQ", "HIhF6C1yc7M", "DlNIxjiqQvs", "JO0-kOXXMEw", "2DihqSsed3w", "uDlvlF5iKz8", "v2jg_5WZ41o", "JekH9K8_SS8", "xVV_6qW_Ho8", "qYOABpvD49s", "VAw8zvyLmfE", ...] 14:18:09.947 [debug] QUERY OK source="media_items" db=2.8ms idle=384.1ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [18] 14:18:09.951 [debug] QUERY OK source="tasks" db=0.6ms idle=387.2ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [203104, 18, ~U[2026-01-03 03:18:09Z], ~U[2026-01-03 03:18:09Z]] 14:18:09.952 [info] {"args":{"id":18},"id":203080,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":393090,"event":"job:stop","queue_time":422835,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 14:18:13.034 [info] {"source":"oban","duration":2476,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:18:20.592 [info] {"args":{"id":16},"id":203081,"meta":{},"system_time":1767410300591701323,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 14:18:20.593 [debug] QUERY OK source="sources" db=0.4ms queue=0.1ms idle=1166.2ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [16] 14:18:20.594 [debug] QUERY OK source="settings" db=0.3ms queue=0.1ms idle=1013.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:18:20.595 [debug] QUERY OK source="media_profiles" db=0.5ms queue=0.1ms idle=168.6ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 14:18:20.596 [debug] QUERY OK source="settings" db=0.3ms queue=0.1ms idle=11.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:18:20.596 [debug] Fetching recent media IDs from YouTube API for playlist: UUPPfK7Nq_yQR84rn1wcTXBg 14:18:20.597 [debug] QUERY OK source="settings" db=0.3ms queue=0.1ms idle=5.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:18:20.597 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 14:18:20.986 [debug] QUERY OK source="media_items" db=5.2ms queue=0.1ms idle=387.3ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND m0."media_id" IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [16, "BiTNUZ2zONY", "7pVLE7ggkcc", "YAh-xEteBz4", "6hNpMT5OwGo", "vx3oGZYqxm4", "7W_ZSNuS-4w", "CxUC2HXvO84", "RxapAZRYJ6I", "f2ainZL8Tzk", "KJtASaKc95g", "yBCh5cyI0Po", "dg_HQL3GBcY", "ZiVvXPpo0eE", "YO1TnWptv3o", "HwnBnsQBeOA", "CCE2v3oIa74", "OWVPYr9e76Y", "VApJtIyMEec", "XtOIQYVq26o", "gZL1KzV54Cw", "kmU-Eazta1s", "XXthHXEpEP8", "dPw_HkMgYI0", "rxq-TvgNCBU", "SaCbUtTuLhA", "TWLqSk4ZlN0", "p7_rduK5WA0", "lNZ56C-f4a8", "GlK3f1cs_l4", "Yabwyb14-BQ", "WupRwvJ7sOc", "MhpoNL1gZbw", "yUfm6AbtJ0g", "y8zfgIgZ4c0", "gOwjmKMmkV4", "aTiunvocl5c", "KebjX3KEgWQ", "0T2MYXljL5o", "i7sbS92R4cg", "66CDGzjLBtY", "T_W0FWiJmM8", "u_80rUKItGc", "C9_wibbg1Ug", "A4mg1ZUb-7s", "YmUfZt4Ku9s", "DoWsgrlIjYU", "gc5ojxTuwOg", "3AMdPMoGJus", "htYY8VwN-9g", ...] 14:18:20.994 [debug] QUERY OK source="media_items" db=4.0ms idle=395.7ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [16] 14:18:20.998 [debug] QUERY OK source="tasks" db=0.5ms idle=400.1ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [203105, 16, ~U[2026-01-03 03:18:20Z], ~U[2026-01-03 03:18:20Z]] 14:18:20.999 [info] {"args":{"id":16},"id":203081,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":406697,"event":"job:stop","queue_time":467582,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 14:18:43.038 [info] {"source":"oban","duration":3508,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:19:00.240 [info] {"source":"oban","duration":801,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 14:19:01.374 [info] GET /sources/13/media/33762 14:19:01.374 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "33762", "source_id" => "13"} Pipelines: [:browser] 14:19:01.376 [debug] QUERY OK source="media_items" db=1.0ms queue=0.1ms idle=1134.7ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [33762] 14:19:01.377 [debug] QUERY OK source="tasks" db=0.6ms idle=950.9ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [33762] 14:19:01.378 [debug] QUERY OK source="sources" db=0.9ms idle=951.1ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [13] 14:19:01.378 [debug] QUERY OK source="settings" db=0.3ms idle=952.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:19:01.379 [debug] QUERY OK source="settings" db=0.4ms idle=685.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:19:01.380 [debug] QUERY OK source="settings" db=0.3ms idle=3.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:19:01.382 [debug] QUERY OK source="media_profiles" db=0.6ms idle=4.2ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 14:19:01.384 [info] Sent 200 in 9ms 14:19:13.040 [info] {"source":"oban","duration":1554,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:19:22.770 [info] {"args":{"id":20},"id":203082,"meta":{},"system_time":1767410362770633283,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 14:19:22.771 [debug] QUERY OK source="sources" db=0.7ms idle=345.1ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [20] 14:19:22.772 [debug] QUERY OK source="settings" db=0.4ms idle=346.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:19:22.773 [debug] QUERY OK source="media_profiles" db=0.5ms idle=346.8ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 14:19:22.774 [debug] QUERY OK source="settings" db=0.5ms idle=10.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:19:22.774 [debug] Fetching recent media IDs from YouTube API for playlist: UU3HjB3X8jeENm46HCkI0Inw 14:19:22.775 [debug] QUERY OK source="settings" db=0.3ms idle=4.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:19:22.775 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 14:19:23.330 [debug] QUERY OK source="media_items" db=5.4ms idle=553.1ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND m0."media_id" IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [20, "CISwNCR8EXc", "EiIJqc5mV90", "8xJUjtnu72E", "Whh2rDVxvYg", "VybtaBZZqCg", "fuIOAraiRAY", "Ri4qqynMLHk", "xglNhNm95KQ", "5hEq1j_TsEY", "9f5iUsFWqoo", "0SXIhVupLZY", "3gAJpHP3yg4", "8zlnEbQgP74", "EnTFdexbFrM", "P3AU8vUwvAs", "4dQvS_n0uy4", "T5CRSwoP5_w", "cd8IcmBLpXc", "L4nAcT3QYkA", "5gskEcRE1uo", "1xywnh3DqFQ", "fXeqjU4tHqo", "YBMxdPCG_PY", "GB5_4JUB9hc", "EtAUdnvt0kc", "y-5D2HhLbso", "q8kP0pRFRMc", "8mQkTPoWfPo", "U5I92UivGzU", "UoMTKhqTf1U", "oIvzxlDViTo", "kCnh99-yZIs", "orABz0cfQZY", "VKt2PXkavyU", "kYwyB7o7BJs", "UB1FC4Nim1Y", "kN_eMzoJJmA", "4hdpejFLkPc", "ArSlY77uV1w", "2me_AlMFJh8", "OlKsICCPadE", "SjpJZ66rGaU", "iRZp_9irH2g", "CN9qeuO04A4", "BUnuun2sL-8", "XSIfSz3ZEGc", "hW5pHqeC1t4", "_cJV_l9tlaU", "ChT4bsCpwcU", ...] 14:19:23.340 [debug] QUERY OK source="media_items" db=8.3ms idle=559.5ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [20] 14:19:23.344 [debug] QUERY OK source="tasks" db=0.7ms idle=568.6ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [203106, 20, ~U[2026-01-03 03:19:23Z], ~U[2026-01-03 03:19:23Z]] 14:19:23.345 [info] {"args":{"id":20},"id":203082,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":574024,"event":"job:stop","queue_time":414683,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 14:19:25.781 [info] {"args":{"id":21},"id":203083,"meta":{},"system_time":1767410365781267418,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 14:19:25.783 [debug] QUERY OK source="sources" db=0.7ms queue=0.2ms idle=1356.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [21] 14:19:25.784 [debug] QUERY OK source="settings" db=0.8ms queue=0.1ms idle=1357.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:19:25.786 [debug] QUERY OK source="media_profiles" db=1.2ms idle=1015.5ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 14:19:25.787 [debug] QUERY OK source="settings" db=0.6ms queue=0.1ms idle=12.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:19:25.787 [debug] Fetching recent media IDs from YouTube API for playlist: UU2-i3KuYoODXsM99Z3-Gm0A 14:19:25.788 [debug] QUERY OK source="settings" db=0.6ms queue=0.1ms idle=6.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:19:25.789 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 14:19:26.154 [debug] QUERY OK source="media_items" db=4.9ms idle=366.6ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND m0."media_id" IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [21, "J5rMffRWoaE", "SpNjg65s29I", "8YoFYb6ahAc", "2z0gjjea0mQ", "2d3dU0R4Sk4", "_TFHZ9W3Jt8", "dqjpFcJG5Cc", "Pm0PXgXMNVY", "YXwzRiYgHHc", "mUK6UT_7PZo", "nE49QFWymsI", "WY4rfxfFsVA", "LHyVvVpA0xM", "HYIwk4qL2os", "RZBQe4RLdZ8", "DN5ES5PlK6c", "OaO4UInG53A", "UqcJk1mPcnQ", "NqSJZesKtFs", "3bsFFOwsQzA", "EaXJ1rQ2v5k", "jnV5Ptgg1Xc", "rXghFt-g_OM", "Y_MU28GV-M0", "OZ1fXb4gcv0", "t7JeRNvBG40", "XG41sdzNz7I", "rQFtIiVV7RA", "TviKrv1FTzc", "0iH3eN6DUbM", "AjzhbnNiJO0", "3Y2fdnw7AwM", "8Z_XpRjS2oo", "RY1Nnw_qOGc", "pUB0TU9UQhI", "eVR3mgSxjUk", "5hGYObRZMPQ", "4MemHNHi_YE", "yM6u1-_JNXo", "VGLq2Tjokl4", "XpV4r2KB0UA", "cvrpvL1kO_8", "Q4kS9l81A0k", "Mq47ro7Pc00", "GAu1Y-5EPeM", "dNIc1vTlbDc", "S1zqKNfggRQ", "zquTrv6kv-U", "-H6sKLcAL9I", ...] 14:19:26.166 [debug] QUERY OK source="media_items" db=9.2ms idle=372.6ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [21] 14:19:26.170 [debug] QUERY OK source="tasks" db=0.7ms idle=380.8ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [203107, 21, ~U[2026-01-03 03:19:26Z], ~U[2026-01-03 03:19:26Z]] 14:19:26.171 [info] {"args":{"id":21},"id":203083,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":389250,"event":"job:stop","queue_time":492959,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 14:19:43.043 [info] {"source":"oban","duration":2752,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:19:57.885 [info] GET /sources/11/media/55269 14:19:57.886 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "55269", "source_id" => "11"} Pipelines: [:browser] 14:19:57.887 [debug] QUERY OK source="media_items" db=0.9ms idle=1033.5ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [55269] 14:19:57.889 [debug] QUERY OK source="tasks" db=0.8ms idle=462.6ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [55269] 14:19:57.889 [debug] QUERY OK source="sources" db=0.8ms idle=462.6ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [11] 14:19:57.891 [debug] QUERY OK source="settings" db=0.3ms queue=0.1ms idle=464.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:19:57.891 [debug] QUERY OK source="settings" db=0.3ms queue=0.2ms idle=35.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:19:57.893 [debug] QUERY OK source="settings" db=0.4ms queue=0.1ms idle=5.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:19:57.895 [debug] QUERY OK source="media_profiles" db=0.3ms idle=6.0ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 14:19:58.312 [info] Sent 200 in 426ms 14:20:00.242 [info] {"source":"oban","duration":532,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 14:20:13.047 [info] {"source":"oban","duration":2684,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:20:43.050 [info] {"source":"oban","duration":1810,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:20:50.753 [info] GET /sources/17/media/50244 14:20:50.754 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "50244", "source_id" => "17"} Pipelines: [:browser] 14:20:50.755 [debug] QUERY OK source="media_items" db=1.0ms queue=0.1ms idle=1328.4ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [50244] 14:20:50.756 [debug] QUERY OK source="tasks" db=0.6ms queue=0.1ms idle=1330.0ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [50244] 14:20:50.757 [debug] QUERY OK source="sources" db=1.0ms idle=775.9ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [17] 14:20:50.758 [debug] QUERY OK source="settings" db=0.2ms idle=332.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:20:50.759 [debug] QUERY OK source="settings" db=0.3ms queue=0.1ms idle=332.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:20:50.759 [debug] QUERY OK source="settings" db=0.3ms idle=3.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:20:50.761 [debug] QUERY OK source="media_profiles" db=0.8ms idle=3.7ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 14:20:50.763 [info] Sent 200 in 9ms 14:21:00.243 [info] {"source":"oban","duration":336,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 14:21:13.053 [info] {"source":"oban","duration":1501,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:21:36.705 [info] GET /sources/11/media/58549 14:21:36.705 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "58549", "source_id" => "11"} Pipelines: [:browser] 14:21:36.707 [debug] QUERY OK source="media_items" db=0.8ms queue=0.1ms idle=598.3ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [58549] 14:21:36.707 [debug] QUERY OK source="tasks" db=0.2ms idle=281.4ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [58549] 14:21:36.708 [debug] QUERY OK source="sources" db=0.7ms idle=281.5ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [11] 14:21:36.709 [debug] QUERY OK source="settings" db=0.5ms idle=282.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:21:36.710 [debug] QUERY OK source="settings" db=0.4ms queue=0.1ms idle=283.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:21:36.711 [debug] QUERY OK source="settings" db=0.3ms idle=3.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:21:36.712 [debug] QUERY OK source="media_profiles" db=0.3ms idle=4.2ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 14:21:36.714 [info] Sent 200 in 9ms 14:21:43.058 [info] {"source":"oban","duration":4403,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:22:00.244 [info] {"source":"oban","duration":406,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 14:22:13.061 [info] {"source":"oban","duration":1594,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:22:16.487 [info] GET /sources/11/media/58543 14:22:16.487 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "58543", "source_id" => "11"} Pipelines: [:browser] 14:22:16.488 [debug] QUERY OK source="media_items" db=0.5ms idle=274.9ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [58543] 14:22:16.489 [debug] QUERY OK source="sources" db=0.6ms idle=63.1ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [11] 14:22:16.490 [debug] QUERY OK source="tasks" db=1.0ms idle=63.1ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [58543] 14:22:16.491 [debug] QUERY OK source="oban_jobs" db=0.6ms idle=64.6ms SELECT o0."id", o0."state", o0."queue", o0."worker", o0."args", o0."meta", o0."tags", o0."errors", o0."attempt", o0."attempted_by", o0."max_attempts", o0."priority", o0."attempted_at", o0."cancelled_at", o0."completed_at", o0."discarded_at", o0."inserted_at", o0."scheduled_at", o0."id" FROM "oban_jobs" AS o0 WHERE (o0."id" = ?) [201951] 14:22:16.492 [debug] QUERY OK source="settings" db=0.6ms queue=0.1ms idle=65.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:22:16.493 [debug] QUERY OK source="settings" db=0.4ms idle=3.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:22:16.494 [debug] QUERY OK source="settings" db=0.4ms idle=3.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:22:16.495 [debug] QUERY OK source="media_profiles" db=0.6ms idle=4.5ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 14:22:16.550 [info] Sent 200 in 63ms 14:22:19.233 [info] {"args":{"id":19},"id":203084,"meta":{},"system_time":1767410539232737104,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 14:22:19.234 [debug] QUERY OK source="sources" db=0.8ms queue=0.1ms idle=807.2ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [19] 14:22:19.235 [debug] QUERY OK source="settings" db=0.5ms queue=0.1ms idle=808.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:22:19.236 [debug] QUERY OK source="media_profiles" db=0.7ms idle=809.6ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 14:22:19.237 [debug] QUERY OK source="settings" db=0.6ms queue=0.1ms idle=12.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:22:19.237 [debug] Fetching recent media IDs from YouTube API for playlist: UUaYhH3F6iB3KyW3afTHk5XA 14:22:19.238 [debug] QUERY OK source="settings" db=0.4ms queue=0.1ms idle=5.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:22:19.239 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 14:22:19.751 [debug] QUERY OK source="media_items" db=4.2ms idle=512.6ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND m0."media_id" IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [19, "mUlKcxGWvrQ", "ydfuNK4wSik", "x6cNQykYdEM", "SvyVS7zvquc", "l4O2F-1BWVI", "LYXADYUSTSg", "HpL40FdPGqk", "Wre5VWHxSug", "PdUu77SAH0I", "VCflrtok9hQ", "haEa6h8Ptf0", "c_-f7G9VSPw", "7rSLcNznix4", "OLXr-B-xwY8", "X05FPJq6_Oc", "kuL-trgOvq8", "WpBEifN8BYw", "YETks_YtraY", "bwKKd4N8Q2E", "PpNfOqbt0a8", "GyifuiQ6p48", "SkoFBCBASto", "-GNid2M6IC8", "muehDmLuJSw", "nBx5yssxPDk", "Q6vzDo6it9o", "AH9Z6_PlKhA", "dZfthyLyjDk", "j9UuSMaqX9Q", "jmoVFLUvyD0", "tKm_pnNEDsc", "boVAiizeh1M", "FNtBH6k7Jmo", "MDhN5WGOJ_o", "P-UQX5L_Ff0", "kys3lRzOOEY", "VDHSC2Dl8f0", "JU0uEdyPKlE", "0sSWAzq7rjc", "HOLXNrjWeuo"] 14:22:19.757 [debug] QUERY OK source="media_items" db=2.2ms queue=0.1ms idle=519.0ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [19] 14:22:19.763 [debug] QUERY OK source="tasks" db=1.1ms queue=0.1ms idle=523.3ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [203108, 19, ~U[2026-01-03 03:22:19Z], ~U[2026-01-03 03:22:19Z]] 14:22:19.764 [info] {"args":{"id":19},"id":203084,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":530881,"event":"job:stop","queue_time":289792,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 14:22:20.236 [info] {"args":{"id":23},"id":203085,"meta":{},"system_time":1767410540236109587,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 14:22:20.237 [debug] QUERY OK source="sources" db=0.4ms queue=0.1ms idle=473.4ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [23] 14:22:20.238 [debug] QUERY OK source="settings" db=0.3ms queue=0.1ms idle=473.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:22:20.239 [debug] QUERY OK source="media_profiles" db=0.3ms queue=0.1ms idle=466.1ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 14:22:20.240 [debug] QUERY OK source="settings" db=0.4ms queue=0.1ms idle=11.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:22:20.240 [debug] Fetching recent media IDs from YouTube API for playlist: UUSHvlfXUGYGWmDBg-afA5Bg 14:22:20.241 [debug] QUERY OK source="settings" db=0.3ms queue=0.1ms idle=4.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:22:20.241 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 14:22:20.565 [debug] QUERY OK source="media_items" db=1.8ms idle=325.6ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND m0."media_id" IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [23, "QASZbKPkS08", "pr7MMAFzHe8", "DG0BSdc6kKg", "o7DJZCU8q34", "G5A2QGwRmS4", "PER4GK9LCTA", "GzIS1WZFKtc", "24P4MFV-HrM", "6x6df3uagb4", "vALU9LhFKhE", "KF1grNBv5hU", "SLSPmp8-tXE", "53liPfHBgYQ", "zykmoM0qjbA", "boyfPk5qdBM", "H2VYuo7yb2o", "75_mYLpHDr4", "PSnlGB9aKVI", "vFBFSi2XqrQ", "X2z1ugOwR2A", "ePV6FKD1J9U", "ipxj_tl_6XY", "6l9-ctzSbCo", "xu3DTyCW3Yk", "wpAt0QaSk7U", "NXy9Sg0KIMY", "ml5AG_Q0y6w", "h_Uq6-e06y8", "37_rLteuwG4", "QCbf0kOJ8lA"] 14:22:20.567 [debug] QUERY OK source="media_items" db=0.8ms idle=327.9ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [23] 14:22:20.570 [debug] QUERY OK source="tasks" db=0.5ms idle=328.6ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [203109, 23, ~U[2026-01-03 03:22:20Z], ~U[2026-01-03 03:22:20Z]] 14:22:20.571 [info] {"args":{"id":23},"id":203085,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":334452,"event":"job:stop","queue_time":463432,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 14:22:21.239 [info] {"args":{"id":25},"id":203086,"meta":{},"system_time":1767410541239382074,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 14:22:21.240 [debug] QUERY OK source="sources" db=0.4ms idle=669.3ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [25] 14:22:21.241 [debug] QUERY OK source="settings" db=0.2ms idle=669.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:22:21.241 [debug] QUERY OK source="media_profiles" db=0.2ms idle=663.4ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 14:22:21.241 [debug] QUERY OK source="settings" db=0.1ms queue=0.1ms idle=8.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:22:21.242 [debug] Fetching recent media IDs from YouTube API for playlist: UUWstkeBSSIEgw6n5qnlXXuA 14:22:21.242 [debug] QUERY OK source="settings" db=0.2ms idle=2.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:22:21.242 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 14:22:21.571 [debug] QUERY OK source="media_items" db=2.7ms idle=328.5ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND m0."media_id" IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [25, "_sYSZI--9TA", "T7P86y4vYKs", "qWpf9ysgE04", "81v7r86tRRE", "a3LYS6jzPKA", "o5UKHwwdhmA", "6CCxzLKCHYA", "VONzFNo8uW4", "jJUysp-6qBs", "3KzmAquL3e4", "5cgK_MdFz7s", "bHpsXfutTFY", "kVhFNQj86Ng", "nyd40ZDhRw4"] 14:22:21.574 [debug] QUERY OK source="media_items" db=2.0ms idle=331.5ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [25] 14:22:21.579 [debug] QUERY OK source="tasks" db=0.9ms idle=335.9ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [203110, 25, ~U[2026-01-03 03:22:21Z], ~U[2026-01-03 03:22:21Z]] 14:22:21.580 [info] {"args":{"id":25},"id":203086,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":340048,"event":"job:stop","queue_time":488125,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 14:22:22.245 [info] {"args":{"id":17},"id":203087,"meta":{},"system_time":1767410542245543414,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 14:22:22.247 [debug] QUERY OK source="sources" db=1.0ms idle=666.6ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [17] 14:22:22.247 [debug] QUERY OK source="settings" db=0.4ms idle=667.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:22:22.248 [debug] QUERY OK source="media_profiles" db=0.2ms idle=660.3ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 14:22:22.248 [debug] QUERY OK source="settings" db=0.2ms idle=11.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:22:22.248 [debug] Fetching recent media IDs from YouTube API for playlist: UUEIwxahdLz7bap-VDs9h35A 14:22:22.249 [debug] QUERY OK source="settings" db=0.1ms idle=3.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:22:22.249 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 14:22:22.624 [debug] QUERY OK source="media_items" db=3.5ms queue=0.1ms idle=373.6ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND m0."media_id" IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [17, "kuMUquaeE6g", "-NzfTE8RI4w", "2eiYALLYBFE", "J_vXK9uvRf4", "tRDxBwverlI", "ymlNErMdI2k", "hM1l19H0tX8", "qg01MgiVT9k", "a3l6FdpltbQ", "NtZaP8VMv0c", "ayicYezINas", "zoTuSOEOvPw", "U7NHNT3M-tw", "B_PCZiNlmPw", "5glksNTKkZI", "iDsb-pxE3fA", "7PJi9KSDVbQ", "CfhsW1kaa2Q", "pleHURTV6fU", "T47s4L1Wje4", "LLlghvxVoH0", "K4542wtX8B4", "rf-efIZI_Dg", "OXvdwc6NDqM", "nGEHUbTtpPY", "0FybegjTkgw", "3TgdCWBV0pg", "Qjd4CREfYbo", "pqnyUemUDF4", "6-FQSEVc_cs", "BvoDuNZ9gLA", "AjJfefo41M8", "dJSGJ1-9XWw", "Mcg9GcilBfU", "MQSwyrjTV2M", "o-dZKBwbsis", "matUCqoiSGk", "0_VdGzEk5-M", "PAOpkv0fpik", "VdwSMytC7y4", "tw5tQPm-B00", "vkD3-msLIHg", "INq7pAmaUuk", "mfTVxFapdLw", "kY2YeM5fNDw", "lkWRiks6luc", "yiCM_i8r4RM", "XzBMFsZT5gM", "dKN6XatdVkY", ...] 14:22:22.631 [debug] QUERY OK source="media_items" db=3.5ms idle=380.4ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [17] 14:22:22.635 [debug] QUERY OK source="tasks" db=0.6ms idle=385.6ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [203111, 17, ~U[2026-01-03 03:22:22Z], ~U[2026-01-03 03:22:22Z]] 14:22:22.636 [info] {"args":{"id":17},"id":203087,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":390077,"event":"job:stop","queue_time":463491,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 14:22:25.255 [info] {"args":{"id":58546},"id":201954,"meta":{},"system_time":1767410545255796744,"max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","event":"job:start","attempt":12,"tags":["media_item","media_fetching","show_in_dashboard"]} 14:22:25.257 [debug] QUERY OK source="media_items" db=0.8ms idle=830.2ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [58546] 14:22:25.257 [info] User scripts lifecyle file either not present or is empty. Skipping. 14:22:25.259 [debug] QUERY OK source="sources" db=1.2ms idle=831.8ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [5] 14:22:25.260 [debug] QUERY OK source="media_profiles" db=0.9ms idle=833.8ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 14:22:25.262 [debug] QUERY OK source="media_items" db=1.1ms idle=14.1ms SELECT 1 FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) LIMIT 1 [58546] 14:22:25.265 [debug] QUERY OK source="media_metadata" db=0.4ms idle=9.1ms SELECT m0."id", m0."metadata_filepath", m0."thumbnail_filepath", m0."media_item_id", m0."inserted_at", m0."updated_at", m0."media_item_id" FROM "media_metadata" AS m0 WHERE (m0."media_item_id" = ?) [58546] 14:22:25.266 [debug] QUERY OK source="media_profiles" db=0.6ms idle=8.3ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 14:22:25.267 [debug] QUERY OK source="settings" db=0.4ms idle=8.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:22:25.268 [debug] QUERY OK source="settings" db=0.4ms queue=0.1ms idle=7.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:22:25.269 [debug] Running yt-dlp command for action: get_downloadable_status 14:22:25.271 [debug] QUERY OK source="settings" db=0.3ms idle=8.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:22:25.271 [debug] QUERY OK source="settings" db=0.2ms idle=6.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:22:25.272 [debug] QUERY OK source="settings" db=0.3ms queue=0.1ms idle=5.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:22:25.273 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=CcUb7Ky2oSI --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/88/cf/88cf947bc9ee26f55cb51bf0220180f37f66d3a80ecc98e64ce12b4b34dee038.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:22:32.258 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=CcUb7Ky2oSI --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/88/cf/88cf947bc9ee26f55cb51bf0220180f37f66d3a80ecc98e64ce12b4b34dee038.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:22:32.259 [debug] Running yt-dlp command for action: download 14:22:32.261 [debug] QUERY OK source="settings" db=0.6ms queue=0.2ms idle=1834.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:22:32.261 [debug] QUERY OK source="settings" db=0.2ms queue=0.1ms idle=1835.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:22:32.262 [debug] QUERY OK source="settings" db=0.2ms queue=0.2ms idle=1836.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:22:32.263 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=CcUb7Ky2oSI --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --embed-subs --sub-langs en --write-thumbnail --convert-thumbnail jpg --output thumbnail:/downloads/CodeSync/Season %(upload_date>%Y)S/s%(upload_date>%Y)Se%(upload_date>%m%d)S99 - %(title)S-thumb.%(ext)S --embed-thumbnail --convert-thumbnail jpg --write-info-json --clean-info-json --embed-metadata --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --sponsorblock-mark sponsor,intro,outro,selfpromo,preview,filler,interaction,music_offtopic --output /downloads/CodeSync/Season %(upload_date>%Y)S/s%(upload_date>%Y)Se%(upload_date>%m%d)S99 - %(title)S.%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/68/14/681491e1cd8d4347ba0642dbce10fc3059d9b740ac87de0cf993829d27893bc0.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:22:40.785 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=CcUb7Ky2oSI --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --embed-subs --sub-langs en --write-thumbnail --convert-thumbnail jpg --output thumbnail:/downloads/CodeSync/Season %(upload_date>%Y)S/s%(upload_date>%Y)Se%(upload_date>%m%d)S99 - %(title)S-thumb.%(ext)S --embed-thumbnail --convert-thumbnail jpg --write-info-json --clean-info-json --embed-metadata --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --sponsorblock-mark sponsor,intro,outro,selfpromo,preview,filler,interaction,music_offtopic --output /downloads/CodeSync/Season %(upload_date>%Y)S/s%(upload_date>%Y)Se%(upload_date>%m%d)S99 - %(title)S.%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/68/14/681491e1cd8d4347ba0642dbce10fc3059d9b740ac87de0cf993829d27893bc0.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 1 with: WARNING: [youtube] CcUb7Ky2oSI: Some tv client https formats have been skipped as they are missing a url. YouTube may have enabled the SABR-only or Server-Side Ad Placement experiment for the current session. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details WARNING: [youtube] CcUb7Ky2oSI: Some web client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details WARNING: The extractor specified to use impersonation for this download, but no impersonate target is available. If you encounter errors, then see https://github.com/yt-dlp/yt-dlp#impersonation for information on installing the required dependencies ERROR: Unable to download video subtitles for 'en': HTTP Error 429: Too Many Requests 14:22:40.786 [error] yt-dlp download error for media item #58546: "WARNING: [youtube] CcUb7Ky2oSI: Some tv client https formats have been skipped as they are missing a url. YouTube may have enabled the SABR-only or Server-Side Ad Placement experiment for the current session. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details\nWARNING: [youtube] CcUb7Ky2oSI: Some web client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details\nWARNING: The extractor specified to use impersonation for this download, but no impersonate target is available. If you encounter errors, then see https://github.com/yt-dlp/yt-dlp#impersonation for information on installing the required dependencies\nERROR: Unable to download video subtitles for 'en': HTTP Error 429: Too Many Requests\n" 14:22:40.790 [debug] QUERY OK source="media_items" db=3.7ms idle=1360.3ms UPDATE "media_items" SET "last_error" = ?, "updated_at" = ? WHERE "id" = ? ["WARNING: [youtube] CcUb7Ky2oSI: Some tv client https formats have been skipped as they are missing a url. YouTube may have enabled the SABR-only or Server-Side Ad Placement experiment for the current session. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details\nWARNING: [youtube] CcUb7Ky2oSI: Some web client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details\nWARNING: The extractor specified to use impersonation for this download, but no impersonate target is available. If you encounter errors, then see https://github.com/yt-dlp/yt-dlp#impersonation for information on installing the required dependencies\nERROR: Unable to download video subtitles for 'en': HTTP Error 429: Too Many Requests\n", ~U[2026-01-03 03:22:40Z], 58546] 14:22:40.791 [info] {"error":"** (Oban.PerformError) Pinchflat.Downloading.MediaDownloadWorker failed with {:error, :download_failed}","args":{"id":58546},"id":201954,"meta":{},"state":"failure","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":15534695,"event":"job:exception","queue_time":333401,"attempt":12,"tags":["media_item","media_fetching","show_in_dashboard"]} 14:22:43.071 [info] {"source":"oban","duration":9148,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:22:54.947 [info] GET /sources/27/media/58540 14:22:54.947 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "58540", "source_id" => "27"} Pipelines: [:browser] 14:22:54.949 [debug] QUERY OK source="media_items" db=1.0ms queue=0.1ms idle=599.5ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [58540] 14:22:54.951 [debug] QUERY OK source="sources" db=0.6ms idle=524.6ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [27] 14:22:54.951 [debug] QUERY OK source="tasks" db=1.3ms queue=0.1ms idle=524.5ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [58540] 14:22:54.953 [debug] QUERY OK source="settings" db=0.3ms idle=526.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:22:54.953 [debug] QUERY OK source="settings" db=0.4ms idle=527.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:22:54.955 [debug] QUERY OK source="settings" db=0.3ms idle=5.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:22:54.957 [debug] QUERY OK source="media_profiles" db=0.4ms idle=5.3ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 14:22:55.003 [info] Sent 200 in 55ms 14:23:00.245 [info] {"source":"oban","duration":620,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 14:23:13.074 [info] {"source":"oban","duration":2368,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:23:27.973 [info] GET /sources/17/media/39298 14:23:27.973 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "39298", "source_id" => "17"} Pipelines: [:browser] 14:23:27.976 [debug] QUERY OK source="media_items" db=1.0ms queue=0.1ms idle=1548.4ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [39298] 14:23:27.977 [debug] QUERY OK source="tasks" db=0.6ms idle=1550.2ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [39298] 14:23:27.977 [debug] QUERY OK source="sources" db=1.0ms idle=1550.2ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [17] 14:23:27.978 [debug] QUERY OK source="settings" db=0.2ms queue=0.1ms idle=1546.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:23:27.979 [debug] QUERY OK source="settings" db=0.2ms idle=545.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:23:27.980 [debug] QUERY OK source="settings" db=0.1ms idle=4.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:23:27.981 [debug] QUERY OK source="media_profiles" db=0.2ms idle=3.9ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 14:23:28.056 [info] Sent 200 in 82ms 14:23:43.079 [info] {"source":"oban","duration":4164,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:23:49.507 [info] {"args":{"id":7},"id":203092,"meta":{},"system_time":1767410629507676112,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 14:23:49.508 [debug] QUERY OK source="sources" db=0.4ms idle=82.1ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [7] 14:23:49.508 [debug] QUERY OK source="settings" db=0.2ms idle=82.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:23:49.509 [debug] QUERY OK source="media_profiles" db=0.4ms idle=83.1ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 14:23:49.510 [debug] QUERY OK source="settings" db=0.5ms idle=10.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:23:49.510 [debug] Fetching recent media IDs from YouTube API for playlist: UUwnKziETDbHJtx78nIkfYug 14:23:49.511 [debug] QUERY OK source="settings" db=0.5ms idle=3.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:23:49.511 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 14:23:49.895 [debug] QUERY OK source="media_items" db=5.2ms idle=381.1ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND m0."media_id" IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [7, "mC5NdpSMDks", "ccV3u3D9ONE", "cVCDjEfPzII", "n0X2rqzKTgM", "dcuCvRNqmpY", "GG1qX8jHKGo", "k9wkleHFvo0", "CWoYVlMuUNQ", "xlfeieH4z38", "eZM2Ik-FHEU", "CtcTG8-qzbA", "6Mmj7mf1qlg", "InwVO9qBjqs", "1Hp-W2bpPrw", "VtE5sTpkn7k", "8dOJypt2F70", "Evm4t4prtWo", "taLzgvbrnv0", "rgCrnyf5JEI", "PHhc-48JT3U", "vFKjpNNjNGw", "VJQlOI70ubw", "E5cfNq0DO90", "DNBGSsZatbY", "pna1NyaHTls", "CUHao-vA98g", "cPN9BJe_RQw", "rCBt4XgCX-0", "f4g6KKGMmEI", "P_I5Jsc3xRw", "fPaU2l7RktM", "0PVwt01b6fs", "0qMDM4Y4Hwo", "Ld285PDsHvs", "p1mQC71wplA", "9k5JhKK6WlA", "WPxrifmtlQI", "nVNBmK7a1y8", "QDnMYztaxfI", "gxsaWhXG1Gg", "RMtkKiyrXic", "JKlJ6OW67Bk", "Sjmb8O-fRWI", "qZhD4G7ENSY", "OTWDzMjgsEY", "Y_eCu_pW6-4", "DplgNsjOPRg", "l6hHI3AVoYM", "joAhvj7dfsc", ...] 14:23:49.910 [debug] QUERY OK source="media_items" db=9.9ms idle=391.2ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [7] 14:23:49.919 [debug] QUERY OK source="tasks" db=0.9ms idle=407.5ms INSERT INTO "tasks" ("job_id","media_item_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [203112, 8350, ~U[2026-01-03 03:23:49Z], ~U[2026-01-03 03:23:49Z]] 14:23:49.927 [debug] QUERY OK source="tasks" db=0.6ms idle=9.0ms INSERT INTO "tasks" ("job_id","media_item_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [203113, 8380, ~U[2026-01-03 03:23:49Z], ~U[2026-01-03 03:23:49Z]] 14:23:49.929 [info] {"args":{"id":8350},"id":203112,"meta":{},"system_time":1767410629929367054,"max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 14:23:49.929 [info] {"args":{"id":8380},"id":203113,"meta":{},"system_time":1767410629929481977,"max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 14:23:49.931 [debug] QUERY OK source="media_items" db=1.1ms idle=3.1ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [8380] 14:23:49.931 [debug] QUERY OK source="media_items" db=1.5ms idle=4.2ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [8350] 14:23:49.931 [info] User scripts lifecyle file either not present or is empty. Skipping. 14:23:49.931 [info] User scripts lifecyle file either not present or is empty. Skipping. 14:23:49.933 [debug] QUERY OK source="sources" db=1.0ms idle=0.9ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [7] 14:23:49.933 [debug] QUERY OK source="sources" db=1.4ms queue=0.1ms idle=4.1ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [7] 14:23:49.934 [debug] QUERY OK source="media_profiles" db=0.8ms idle=1.4ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 14:23:49.934 [debug] QUERY OK source="media_profiles" db=0.8ms idle=0.6ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 14:23:49.934 [debug] QUERY OK source="tasks" db=1.0ms idle=1.9ms INSERT INTO "tasks" ("job_id","media_item_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [203114, 8401, ~U[2026-01-03 03:23:49Z], ~U[2026-01-03 03:23:49Z]] 14:23:49.935 [debug] QUERY OK source="media_items" db=0.9ms idle=1.5ms SELECT 1 FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) LIMIT 1 [8350] 14:23:49.935 [debug] QUERY OK source="media_items" db=0.7ms queue=0.1ms idle=1.5ms SELECT 1 FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) LIMIT 1 [8380] 14:23:49.937 [debug] QUERY OK source="media_metadata" db=0.5ms queue=0.1ms idle=2.7ms SELECT m0."id", m0."metadata_filepath", m0."thumbnail_filepath", m0."media_item_id", m0."inserted_at", m0."updated_at", m0."media_item_id" FROM "media_metadata" AS m0 WHERE (m0."media_item_id" = ?) [8350] 14:23:49.938 [debug] QUERY OK source="media_metadata" db=0.3ms queue=0.2ms idle=3.2ms SELECT m0."id", m0."metadata_filepath", m0."thumbnail_filepath", m0."media_item_id", m0."inserted_at", m0."updated_at", m0."media_item_id" FROM "media_metadata" AS m0 WHERE (m0."media_item_id" = ?) [8380] 14:23:49.938 [debug] QUERY OK source="media_profiles" db=0.5ms idle=2.4ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 14:23:49.939 [debug] QUERY OK source="media_profiles" db=0.5ms idle=2.6ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 14:23:49.940 [debug] QUERY OK source="settings" db=0.4ms idle=1.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:23:49.940 [debug] QUERY OK source="settings" db=0.4ms idle=1.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:23:49.940 [debug] QUERY OK source="settings" db=0.5ms idle=1.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:23:49.941 [debug] QUERY OK source="settings" db=0.8ms idle=1.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:23:49.942 [debug] Running yt-dlp command for action: get_downloadable_status 14:23:49.942 [debug] Running yt-dlp command for action: get_downloadable_status 14:23:49.943 [debug] QUERY OK source="tasks" db=0.5ms queue=0.1ms idle=2.4ms INSERT INTO "tasks" ("job_id","media_item_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [203115, 8418, ~U[2026-01-03 03:23:49Z], ~U[2026-01-03 03:23:49Z]] 14:23:49.943 [debug] QUERY OK source="settings" db=0.5ms idle=2.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:23:49.944 [debug] QUERY OK source="settings" db=0.6ms queue=0.1ms idle=2.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:23:49.945 [debug] QUERY OK source="settings" db=1.2ms queue=0.3ms idle=2.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:23:49.945 [debug] QUERY OK source="settings" db=0.5ms idle=1.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:23:49.946 [debug] QUERY OK source="settings" db=0.2ms queue=0.1ms idle=1.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:23:49.946 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=aCES82xfgdw --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/9a/64/9a644b665782da79ccd58178542f01007254262f219ca22ba82592d04df7a47f.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:23:49.947 [debug] QUERY OK source="settings" db=0.5ms idle=0.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:23:49.947 [debug] QUERY OK source="tasks" db=0.4ms queue=0.1ms idle=1.0ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [203116, 7, ~U[2026-01-03 03:23:49Z], ~U[2026-01-03 03:23:49Z]] 14:23:49.947 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=bhkmFO8DikY --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/bf/97/bf97a58df9ca7f8e5bb7a9d2f43ebd0664bb789b0b673ef08966614429e69897.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:23:49.948 [info] {"args":{"id":7},"id":203092,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":439771,"event":"job:stop","queue_time":376385,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 14:23:55.450 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=aCES82xfgdw --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/9a/64/9a644b665782da79ccd58178542f01007254262f219ca22ba82592d04df7a47f.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 1 with: ERROR: [youtube] aCES82xfgdw: Sign in to confirm your age. This video may be inappropriate for some users. Use --cookies-from-browser or --cookies for the authentication. See https://github.com/yt-dlp/yt-dlp/wiki/FAQ#how-do-i-pass-cookies-to-yt-dlp for how to manually pass cookies. Also see https://github.com/yt-dlp/yt-dlp/wiki/Extractors#exporting-youtube-cookies for tips on effectively exporting YouTube cookies 14:23:55.452 [debug] QUERY OK source="settings" db=0.8ms idle=934.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:23:55.453 [debug] QUERY OK source="settings" db=0.5ms idle=26.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:23:55.454 [debug] Running yt-dlp command for action: get_downloadable_status 14:23:55.456 [debug] QUERY OK source="settings" db=0.2ms idle=29.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:23:55.457 [debug] QUERY OK source="settings" db=0.3ms queue=0.1ms idle=30.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:23:55.457 [debug] QUERY OK source="settings" db=0.3ms queue=0.1ms idle=31.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:23:55.458 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=aCES82xfgdw --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/fe/c9/fec9b9e92fd47370fe7ba98c2966e86a1f94e2efdeeafe52131d59b3eace3d12.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:23:55.511 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=bhkmFO8DikY --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/bf/97/bf97a58df9ca7f8e5bb7a9d2f43ebd0664bb789b0b673ef08966614429e69897.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 1 with: ERROR: [youtube] bhkmFO8DikY: Sign in to confirm your age. This video may be inappropriate for some users. Use --cookies-from-browser or --cookies for the authentication. See https://github.com/yt-dlp/yt-dlp/wiki/FAQ#how-do-i-pass-cookies-to-yt-dlp for how to manually pass cookies. Also see https://github.com/yt-dlp/yt-dlp/wiki/Extractors#exporting-youtube-cookies for tips on effectively exporting YouTube cookies 14:23:55.512 [debug] QUERY OK source="settings" db=0.5ms queue=0.1ms idle=59.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:23:55.512 [debug] QUERY OK source="settings" db=0.1ms idle=59.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:23:55.513 [debug] Running yt-dlp command for action: get_downloadable_status 14:23:55.515 [debug] QUERY OK source="settings" db=0.2ms idle=58.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:23:55.515 [debug] QUERY OK source="settings" db=0.2ms idle=58.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:23:55.516 [debug] QUERY OK source="settings" db=0.3ms idle=57.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:23:55.516 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=bhkmFO8DikY --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/0b/7e/0b7e26fdb45c16e5bf595cb6fa9d8a8f119d6b88dd6c21ac2e967aaecce12a93.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:23:57.536 [info] {"args":{"id":24},"id":203093,"meta":{},"system_time":1767410637535967409,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 14:23:57.538 [debug] QUERY OK source="sources" db=1.0ms queue=0.1ms idle=110.7ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [24] 14:23:57.539 [debug] QUERY OK source="settings" db=0.5ms queue=0.1ms idle=112.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:23:57.540 [debug] QUERY OK source="media_profiles" db=0.6ms idle=113.3ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 14:23:57.541 [debug] QUERY OK source="settings" db=0.7ms queue=0.1ms idle=12.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:23:57.541 [debug] Fetching recent media IDs from YouTube API for playlist: UUNTjSZfAK117b2kFGNCJfdA 14:23:57.542 [debug] QUERY OK source="settings" db=0.3ms idle=6.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:23:57.542 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 14:23:57.919 [debug] QUERY OK source="media_items" db=4.7ms idle=376.3ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND m0."media_id" IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [24, "2J48c2sukbo", "zq9gpqgWFv8", "EWdphas_OP4", "-U2sQ3e3R-0", "XdytKwHuG_8", "t-hori2Io14", "Xbemvi42Ngs", "91m4MQw_sZI", "GfUIbPqAMQs", "4VpVt3zdvL8", "q6Kd5C7O-F8", "EV6DSqTOXM0", "mMvfBUNNKIY", "C215grXAMCk", "_x6TE7hbE1k", "vycMxLco0a0", "lJWhisaNv8E", "4Blxc8mVzQs", "ztqcWc5aaks", "0Dvn039qD8I", "Vx69evZOEAE", "4dzZ44-xVds", "Rews5WNxiNk", "f-BFFWzh9uE", "RfJSMWHO0tY", "gMeUOURvDP8", "LEiL1np9sSM", "F-QeDtQ8Gy4", "9FSIF281OAo", "Shav52BfzWk", "dsCfQ3y5tHQ", "0rpt5sMb7cw", "Fe7Y152ak3Y", "HEuablkqrCg", "BRUTYHBJ_Z4", "gpaV4bgEG-g", "ppjFdEbIS4g", "lEhEMRA17bg", "tpIXmmV4ib4", "LBYQ_NLVKCw", "JsdM3k3QiPc", "TNmSVjGyZx0", "OMVYZziNjhc", "uyfyFRvng3c", "YFBg5NNEW4g", "IkZe4pXDv0k", "ZT0in30U-ug", "kqDqSLOuxmM", "ZgLsNSWN46o", ...] 14:23:57.923 [debug] QUERY OK source="media_items" db=2.2ms idle=382.5ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [24] 14:23:57.928 [debug] QUERY OK source="tasks" db=0.9ms idle=385.1ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [203117, 24, ~U[2026-01-03 03:23:57Z], ~U[2026-01-03 03:23:57Z]] 14:23:57.929 [info] {"args":{"id":24},"id":203093,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":392594,"event":"job:stop","queue_time":400957,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 14:23:59.091 [info] GET /sources/14/media/32646 14:23:59.091 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "32646", "source_id" => "14"} Pipelines: [:browser] 14:23:59.093 [debug] QUERY OK source="media_items" db=0.9ms idle=1164.6ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [32646] 14:23:59.094 [debug] QUERY OK source="tasks" db=0.7ms idle=1165.0ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [32646] 14:23:59.094 [debug] QUERY OK source="sources" db=0.8ms idle=1164.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [14] 14:23:59.095 [debug] QUERY OK source="settings" db=0.4ms idle=1156.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:23:59.096 [debug] QUERY OK source="settings" db=0.5ms idle=564.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:23:59.097 [debug] QUERY OK source="settings" db=0.3ms idle=3.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:23:59.099 [debug] QUERY OK source="media_profiles" db=0.2ms idle=4.5ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 14:23:59.102 [info] Sent 200 in 11ms 14:24:00.247 [info] {"source":"oban","duration":787,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 14:24:00.685 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=aCES82xfgdw --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/fe/c9/fec9b9e92fd47370fe7ba98c2966e86a1f94e2efdeeafe52131d59b3eace3d12.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 1 with: ERROR: [youtube] aCES82xfgdw: Sign in to confirm your age. This video may be inappropriate for some users. Use --cookies-from-browser or --cookies for the authentication. See https://github.com/yt-dlp/yt-dlp/wiki/FAQ#how-do-i-pass-cookies-to-yt-dlp for how to manually pass cookies. Also see https://github.com/yt-dlp/yt-dlp/wiki/Extractors#exporting-youtube-cookies for tips on effectively exporting YouTube cookies 14:24:00.686 [error] yt-dlp download error for media item #8350: "ERROR: [youtube] aCES82xfgdw: Sign in to confirm your age. This video may be inappropriate for some users. Use --cookies-from-browser or --cookies for the authentication. See https://github.com/yt-dlp/yt-dlp/wiki/FAQ#how-do-i-pass-cookies-to-yt-dlp for how to manually pass cookies. Also see https://github.com/yt-dlp/yt-dlp/wiki/Extractors#exporting-youtube-cookies for tips on effectively exporting YouTube cookies\n" 14:24:00.686 [error] yt-dlp download will not be retried: "ERROR: [youtube] aCES82xfgdw: Sign in to confirm your age. This video may be inappropriate for some users. Use --cookies-from-browser or --cookies for the authentication. See https://github.com/yt-dlp/yt-dlp/wiki/FAQ#how-do-i-pass-cookies-to-yt-dlp for how to manually pass cookies. Also see https://github.com/yt-dlp/yt-dlp/wiki/Extractors#exporting-youtube-cookies for tips on effectively exporting YouTube cookies\n" 14:24:00.687 [info] {"args":{"id":8350},"id":203112,"meta":{},"state":"success","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":10757401,"event":"job:stop","queue_time":924804,"attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 14:24:00.695 [info] {"args":{"id":8401},"id":203114,"meta":{},"system_time":1767410640695593459,"max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 14:24:00.696 [debug] QUERY OK source="media_items" db=0.3ms queue=0.1ms idle=270.0ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [8401] 14:24:00.696 [info] User scripts lifecyle file either not present or is empty. Skipping. 14:24:00.697 [debug] QUERY OK source="sources" db=0.3ms idle=271.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [7] 14:24:00.698 [debug] QUERY OK source="media_profiles" db=0.7ms idle=156.9ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 14:24:00.699 [debug] QUERY OK source="media_items" db=0.9ms idle=11.2ms SELECT 1 FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) LIMIT 1 [8401] 14:24:00.703 [debug] QUERY OK source="media_metadata" db=0.4ms idle=7.0ms SELECT m0."id", m0."metadata_filepath", m0."thumbnail_filepath", m0."media_item_id", m0."inserted_at", m0."updated_at", m0."media_item_id" FROM "media_metadata" AS m0 WHERE (m0."media_item_id" = ?) [8401] 14:24:00.703 [debug] QUERY OK source="media_profiles" db=0.5ms idle=6.6ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 14:24:00.704 [debug] QUERY OK source="settings" db=0.3ms idle=6.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:24:00.705 [debug] QUERY OK source="settings" db=0.3ms idle=6.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:24:00.706 [debug] Running yt-dlp command for action: get_downloadable_status 14:24:00.708 [debug] QUERY OK source="settings" db=0.7ms idle=7.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:24:00.708 [debug] QUERY OK source="settings" db=0.5ms idle=5.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:24:00.709 [debug] QUERY OK source="settings" db=0.4ms idle=5.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:24:00.709 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=ZWSj0M132e8 --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/f2/e0/f2e0616f137d83f02dc80a7097cb7c07929199fd191c265b38795f078cda829b.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:24:00.832 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=bhkmFO8DikY --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/0b/7e/0b7e26fdb45c16e5bf595cb6fa9d8a8f119d6b88dd6c21ac2e967aaecce12a93.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 1 with: ERROR: [youtube] bhkmFO8DikY: Sign in to confirm your age. This video may be inappropriate for some users. Use --cookies-from-browser or --cookies for the authentication. See https://github.com/yt-dlp/yt-dlp/wiki/FAQ#how-do-i-pass-cookies-to-yt-dlp for how to manually pass cookies. Also see https://github.com/yt-dlp/yt-dlp/wiki/Extractors#exporting-youtube-cookies for tips on effectively exporting YouTube cookies 14:24:00.832 [error] yt-dlp download error for media item #8380: "ERROR: [youtube] bhkmFO8DikY: Sign in to confirm your age. This video may be inappropriate for some users. Use --cookies-from-browser or --cookies for the authentication. See https://github.com/yt-dlp/yt-dlp/wiki/FAQ#how-do-i-pass-cookies-to-yt-dlp for how to manually pass cookies. Also see https://github.com/yt-dlp/yt-dlp/wiki/Extractors#exporting-youtube-cookies for tips on effectively exporting YouTube cookies\n" 14:24:00.833 [error] yt-dlp download will not be retried: "ERROR: [youtube] bhkmFO8DikY: Sign in to confirm your age. This video may be inappropriate for some users. Use --cookies-from-browser or --cookies for the authentication. See https://github.com/yt-dlp/yt-dlp/wiki/FAQ#how-do-i-pass-cookies-to-yt-dlp for how to manually pass cookies. Also see https://github.com/yt-dlp/yt-dlp/wiki/Extractors#exporting-youtube-cookies for tips on effectively exporting YouTube cookies\n" 14:24:00.834 [info] {"args":{"id":8380},"id":203113,"meta":{},"state":"success","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":10903768,"event":"job:stop","queue_time":924804,"attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 14:24:00.844 [info] {"args":{"id":8418},"id":203115,"meta":{},"system_time":1767410640844068832,"max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 14:24:00.846 [debug] QUERY OK source="media_items" db=0.9ms queue=0.1ms idle=136.6ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [8418] 14:24:00.846 [info] User scripts lifecyle file either not present or is empty. Skipping. 14:24:00.848 [debug] QUERY OK source="sources" db=0.9ms queue=0.1ms idle=138.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [7] 14:24:00.849 [debug] QUERY OK source="media_profiles" db=0.8ms idle=139.0ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 14:24:00.852 [debug] QUERY OK source="media_items" db=1.5ms queue=0.1ms idle=15.7ms SELECT 1 FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) LIMIT 1 [8418] 14:24:00.855 [debug] QUERY OK source="media_metadata" db=0.3ms idle=10.6ms SELECT m0."id", m0."metadata_filepath", m0."thumbnail_filepath", m0."media_item_id", m0."inserted_at", m0."updated_at", m0."media_item_id" FROM "media_metadata" AS m0 WHERE (m0."media_item_id" = ?) [8418] 14:24:00.856 [debug] QUERY OK source="media_profiles" db=0.5ms queue=0.1ms idle=9.4ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 14:24:00.857 [debug] QUERY OK source="settings" db=0.4ms queue=0.1ms idle=9.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:24:00.858 [debug] QUERY OK source="settings" db=0.4ms queue=0.1ms idle=8.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:24:00.859 [debug] Running yt-dlp command for action: get_downloadable_status 14:24:00.861 [debug] QUERY OK source="settings" db=0.4ms idle=8.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:24:00.861 [debug] QUERY OK source="settings" db=0.3ms queue=0.1ms idle=6.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:24:00.862 [debug] QUERY OK source="settings" db=0.3ms queue=0.1ms idle=6.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:24:00.863 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=v6jHhzj08yQ --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/7f/bb/7fbb88d0b76ea17b2dbb28ca9474c33050b012a7334f97b9db957224fb5d9a4e.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:24:06.026 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=ZWSj0M132e8 --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/f2/e0/f2e0616f137d83f02dc80a7097cb7c07929199fd191c265b38795f078cda829b.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 1 with: ERROR: [youtube] ZWSj0M132e8: Sign in to confirm your age. This video may be inappropriate for some users. Use --cookies-from-browser or --cookies for the authentication. See https://github.com/yt-dlp/yt-dlp/wiki/FAQ#how-do-i-pass-cookies-to-yt-dlp for how to manually pass cookies. Also see https://github.com/yt-dlp/yt-dlp/wiki/Extractors#exporting-youtube-cookies for tips on effectively exporting YouTube cookies 14:24:06.027 [debug] QUERY OK source="settings" db=0.2ms queue=0.1ms idle=1600.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:24:06.028 [debug] QUERY OK source="settings" db=0.3ms idle=1601.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:24:06.028 [debug] Running yt-dlp command for action: get_downloadable_status 14:24:06.030 [debug] QUERY OK source="settings" db=0.5ms idle=1603.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:24:06.031 [debug] QUERY OK source="settings" db=0.3ms idle=1474.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:24:06.032 [debug] QUERY OK source="settings" db=0.3ms idle=470.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:24:06.032 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=ZWSj0M132e8 --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/b7/3e/b73e118a73887048bc7efef11522c14e47f642615855fe8fa08a434fdebe381d.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:24:06.075 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=v6jHhzj08yQ --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/7f/bb/7fbb88d0b76ea17b2dbb28ca9474c33050b012a7334f97b9db957224fb5d9a4e.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 1 with: ERROR: [youtube] v6jHhzj08yQ: Sign in to confirm your age. This video may be inappropriate for some users. Use --cookies-from-browser or --cookies for the authentication. See https://github.com/yt-dlp/yt-dlp/wiki/FAQ#how-do-i-pass-cookies-to-yt-dlp for how to manually pass cookies. Also see https://github.com/yt-dlp/yt-dlp/wiki/Extractors#exporting-youtube-cookies for tips on effectively exporting YouTube cookies 14:24:06.076 [debug] QUERY OK source="settings" db=0.5ms idle=48.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:24:06.077 [debug] QUERY OK source="settings" db=0.4ms idle=48.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:24:06.078 [debug] Running yt-dlp command for action: get_downloadable_status 14:24:06.080 [debug] QUERY OK source="settings" db=0.4ms idle=49.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:24:06.080 [debug] QUERY OK source="settings" db=0.3ms idle=48.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:24:06.081 [debug] QUERY OK source="settings" db=0.6ms idle=48.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:24:06.081 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=v6jHhzj08yQ --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/c2/b1/c2b17669009363dda0793fc29c5f3620359cb351cf1ba0c2cd7955d8811df7d0.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:24:11.260 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=ZWSj0M132e8 --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/b7/3e/b73e118a73887048bc7efef11522c14e47f642615855fe8fa08a434fdebe381d.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 1 with: ERROR: [youtube] ZWSj0M132e8: Sign in to confirm your age. This video may be inappropriate for some users. Use --cookies-from-browser or --cookies for the authentication. See https://github.com/yt-dlp/yt-dlp/wiki/FAQ#how-do-i-pass-cookies-to-yt-dlp for how to manually pass cookies. Also see https://github.com/yt-dlp/yt-dlp/wiki/Extractors#exporting-youtube-cookies for tips on effectively exporting YouTube cookies 14:24:11.260 [error] yt-dlp download error for media item #8401: "ERROR: [youtube] ZWSj0M132e8: Sign in to confirm your age. This video may be inappropriate for some users. Use --cookies-from-browser or --cookies for the authentication. See https://github.com/yt-dlp/yt-dlp/wiki/FAQ#how-do-i-pass-cookies-to-yt-dlp for how to manually pass cookies. Also see https://github.com/yt-dlp/yt-dlp/wiki/Extractors#exporting-youtube-cookies for tips on effectively exporting YouTube cookies\n" 14:24:11.261 [error] yt-dlp download will not be retried: "ERROR: [youtube] ZWSj0M132e8: Sign in to confirm your age. This video may be inappropriate for some users. Use --cookies-from-browser or --cookies for the authentication. See https://github.com/yt-dlp/yt-dlp/wiki/FAQ#how-do-i-pass-cookies-to-yt-dlp for how to manually pass cookies. Also see https://github.com/yt-dlp/yt-dlp/wiki/Extractors#exporting-youtube-cookies for tips on effectively exporting YouTube cookies\n" 14:24:11.263 [info] {"args":{"id":8401},"id":203114,"meta":{},"state":"success","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":10565873,"event":"job:stop","queue_time":11693922,"attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 14:24:11.631 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=v6jHhzj08yQ --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/c2/b1/c2b17669009363dda0793fc29c5f3620359cb351cf1ba0c2cd7955d8811df7d0.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 1 with: ERROR: [youtube] v6jHhzj08yQ: Sign in to confirm your age. This video may be inappropriate for some users. Use --cookies-from-browser or --cookies for the authentication. See https://github.com/yt-dlp/yt-dlp/wiki/FAQ#how-do-i-pass-cookies-to-yt-dlp for how to manually pass cookies. Also see https://github.com/yt-dlp/yt-dlp/wiki/Extractors#exporting-youtube-cookies for tips on effectively exporting YouTube cookies 14:24:11.632 [error] yt-dlp download error for media item #8418: "ERROR: [youtube] v6jHhzj08yQ: Sign in to confirm your age. This video may be inappropriate for some users. Use --cookies-from-browser or --cookies for the authentication. See https://github.com/yt-dlp/yt-dlp/wiki/FAQ#how-do-i-pass-cookies-to-yt-dlp for how to manually pass cookies. Also see https://github.com/yt-dlp/yt-dlp/wiki/Extractors#exporting-youtube-cookies for tips on effectively exporting YouTube cookies\n" 14:24:11.632 [error] yt-dlp download will not be retried: "ERROR: [youtube] v6jHhzj08yQ: Sign in to confirm your age. This video may be inappropriate for some users. Use --cookies-from-browser or --cookies for the authentication. See https://github.com/yt-dlp/yt-dlp/wiki/FAQ#how-do-i-pass-cookies-to-yt-dlp for how to manually pass cookies. Also see https://github.com/yt-dlp/yt-dlp/wiki/Extractors#exporting-youtube-cookies for tips on effectively exporting YouTube cookies\n" 14:24:11.634 [info] {"args":{"id":8418},"id":203115,"meta":{},"state":"success","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":10788844,"event":"job:stop","queue_time":11840881,"attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 14:24:13.085 [info] {"source":"oban","duration":5542,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:24:25.897 [info] GET /sources/23/media/21400/force_download 14:24:25.898 [debug] QUERY OK source="settings" db=0.6ms queue=0.1ms idle=1277.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:24:25.899 [debug] QUERY OK source="settings" db=0.6ms idle=472.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:24:25.899 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 14:24:25.900 [error] #PID<0.11201.0> running PinchflatWeb.Endpoint (connection #PID<0.11200.0>, stream id 1) terminated Server: pinchflat.uiau7e.uncld.dev:80 (http) Request: GET /sources/23/media/21400/force_download ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/23/media/21400/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.11200.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/23/media/21400/force_download", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 44722}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYVi1LVjRsUkVyWjQ3MHo0anM1WFBNc25I.LCkZxNfOyFPey5BDGvRkZUfuDgh0Xg1JMRVCvv6j4gk", "from" => "gptbot(at)openai.com", "host" => "pinchflat.uiau7e.uncld.dev", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.3; +https://openai.com/gptbot)", "via" => "2.0 Caddy", "x-forwarded-for" => "74.7.227.183", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https", "x-openai-host-hash" => "454925582" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{ "_pinchflat_key" => "SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYVi1LVjRsUkVyWjQ3MHo0anM1WFBNc25I.LCkZxNfOyFPey5BDGvRkZUfuDgh0Xg1JMRVCvv6j4gk" }, halted: false, host: "pinchflat.uiau7e.uncld.dev", method: "GET", owner: #PID<0.11201.0>, params: %{}, path_info: ["sources", "23", "media", "21400", "force_download"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.uiau7e.uncld.dev", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {10, 210, 0, 2}, req_cookies: %{ "_pinchflat_key" => "SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYVi1LVjRsUkVyWjQ3MHo0anM1WFBNc25I.LCkZxNfOyFPey5BDGvRkZUfuDgh0Xg1JMRVCvv6j4gk" }, req_headers: [ {"accept", "*/*"}, {"accept-encoding", "gzip, br, deflate"}, {"cookie", "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYVi1LVjRsUkVyWjQ3MHo0anM1WFBNc25I.LCkZxNfOyFPey5BDGvRkZUfuDgh0Xg1JMRVCvv6j4gk"}, {"from", "gptbot(at)openai.com"}, {"host", "pinchflat.uiau7e.uncld.dev"}, {"user-agent", "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.3; +https://openai.com/gptbot)"}, {"via", "2.0 Caddy"}, {"x-forwarded-for", "74.7.227.183"}, {"x-forwarded-host", "pinchflat.uiau7e.uncld.dev"}, {"x-forwarded-proto", "https"}, {"x-openai-host-hash", "454925582"} ], request_path: "/sources/23/media/21400/force_download", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GIcaovEI_wEgJ0wAAhoh"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.11200.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/23/media/21400/force_download", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 44722}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYVi1LVjRsUkVyWjQ3MHo0anM1WFBNc25I.LCkZxNfOyFPey5BDGvRkZUfuDgh0Xg1JMRVCvv6j4gk", "from" => "gptbot(at)openai.com", "host" => "pinchflat.uiau7e.uncld.dev", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.3; +https://openai.com/gptbot)", "via" => "2.0 Caddy", "x-forwarded-for" => "74.7.227.183", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https", "x-openai-host-hash" => "454925582" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/23/media/21400/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.11200.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/23/media/21400/force_download", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 44722}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYVi1LVjRsUkVyWjQ3MHo0anM1WFBNc25I.LCkZxNfOyFPey5BDGvRkZUfuDgh0Xg1JMRVCvv6j4gk", "from" => "gptbot(at)openai.com", "host" => "pinchflat.uiau7e.uncld.dev", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.3; +https://openai.com/gptbot)", "via" => "2.0 Caddy", "x-forwarded-for" => "74.7.227.183", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https", "x-openai-host-hash" => "454925582" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{ " (truncated) 14:24:43.090 [info] {"source":"oban","duration":3635,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:24:47.703 [info] {"args":{"id":3},"id":203094,"meta":{},"system_time":1767410687703573503,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 14:24:47.704 [debug] QUERY OK source="sources" db=0.3ms idle=278.4ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [3] 14:24:47.705 [debug] QUERY OK source="settings" db=0.2ms idle=279.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:24:47.706 [debug] QUERY OK source="media_profiles" db=0.3ms idle=280.1ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 14:24:47.707 [debug] QUERY OK source="settings" db=0.2ms idle=10.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:24:47.707 [debug] Fetching recent media IDs from YouTube API for playlist: UUISrVZmDM4x-Rq9mmNUw7Zw 14:24:47.708 [debug] QUERY OK source="settings" db=0.2ms queue=0.1ms idle=4.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:24:47.708 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 14:24:48.137 [debug] QUERY OK source="media_items" db=3.1ms queue=0.1ms idle=428.3ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND m0."media_id" IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [3, "MQ2cHq3-J7A", "CtF5dLHITYA", "SGJkxRdkRGg", "OUCt85aJaAA", "9gARPYZOka4", "-uH-Gi5tjEw", "qwUBBQKYX94", "s8VLDSQJ8nA", "EvPfr0lKkh4", "msXzAxF49gA", "hQCWaSvjkU0", "RcmjVsy3a-g", "xtuNc9vYJG4", "fj2tcg8OzsM", "2FZ4IfPACDM", "2Q9DzW20YJ8", "IVsWFGOE_mw", "vPxpMcv2Z4Y", "Zverj_ldlhY", "pQK8xasPd9Q", "_Yo7nh8u9pk", "4HzltsOvc0A", "a8UBLMm71JY", "3vqbr7-6Twk", "Df0iVjAKJZw", "n-X-AJpHUyI", "4CV7jI0e0Hw", "nqPoocCKci8", "5IIOdWnJGxg", "jkPL8BaM4ko", "CzeQtnRmUZ0", "9u-0d2IVZ3I", "igtvNmqsKM0", "47XDpW4nOzk", "8xvd7xSLQOo", "PnQPZMN0kIY", "feDph2WgRfI", "Z5FZ2XfX4Uc", "e0DxPopyrqM", "YvaK-Tjp2ck", "6_CctUPWX4I", "_DzHKw8yK58", "VnAkeiehyCg", "EFW1iCguDV8", "CEj7B1VzUwU", "3cy5fWUssjQ", "ZnjoTYmqLhs", "5IxtizzvaWw", "ZnBsMRl-EL0", ...] 14:24:48.144 [debug] QUERY OK source="media_items" db=3.1ms idle=435.6ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [3] 14:24:48.148 [debug] QUERY OK source="tasks" db=0.6ms idle=439.0ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [203118, 3, ~U[2026-01-03 03:24:48Z], ~U[2026-01-03 03:24:48Z]] 14:24:48.149 [info] {"args":{"id":3},"id":203094,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":444912,"event":"job:stop","queue_time":965642,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 14:24:51.459 [info] GET /sources/17/media/50561/force_download 14:24:51.461 [debug] QUERY OK source="settings" db=1.0ms queue=0.1ms idle=751.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:24:51.462 [debug] QUERY OK source="settings" db=1.0ms idle=35.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:24:51.462 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 14:24:51.464 [error] #PID<0.11207.0> running PinchflatWeb.Endpoint (connection #PID<0.11206.0>, stream id 1) terminated Server: pinchflat.uiau7e.uncld.dev:80 (http) Request: GET /sources/17/media/50561/force_download ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/17/media/50561/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.11206.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/17/media/50561/force_download", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 49838}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYVi1LVjRsUkVyWjQ3MHo0anM1WFBNc25I.LCkZxNfOyFPey5BDGvRkZUfuDgh0Xg1JMRVCvv6j4gk", "from" => "gptbot(at)openai.com", "host" => "pinchflat.uiau7e.uncld.dev", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.3; +https://openai.com/gptbot)", "via" => "2.0 Caddy", "x-forwarded-for" => "74.7.227.183", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https", "x-openai-host-hash" => "454925582" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{ "_pinchflat_key" => "SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYVi1LVjRsUkVyWjQ3MHo0anM1WFBNc25I.LCkZxNfOyFPey5BDGvRkZUfuDgh0Xg1JMRVCvv6j4gk" }, halted: false, host: "pinchflat.uiau7e.uncld.dev", method: "GET", owner: #PID<0.11207.0>, params: %{}, path_info: ["sources", "17", "media", "50561", "force_download"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.uiau7e.uncld.dev", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {10, 210, 0, 2}, req_cookies: %{ "_pinchflat_key" => "SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYVi1LVjRsUkVyWjQ3MHo0anM1WFBNc25I.LCkZxNfOyFPey5BDGvRkZUfuDgh0Xg1JMRVCvv6j4gk" }, req_headers: [ {"accept", "*/*"}, {"accept-encoding", "gzip, br, deflate"}, {"cookie", "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYVi1LVjRsUkVyWjQ3MHo0anM1WFBNc25I.LCkZxNfOyFPey5BDGvRkZUfuDgh0Xg1JMRVCvv6j4gk"}, {"from", "gptbot(at)openai.com"}, {"host", "pinchflat.uiau7e.uncld.dev"}, {"user-agent", "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.3; +https://openai.com/gptbot)"}, {"via", "2.0 Caddy"}, {"x-forwarded-for", "74.7.227.183"}, {"x-forwarded-host", "pinchflat.uiau7e.uncld.dev"}, {"x-forwarded-proto", "https"}, {"x-openai-host-hash", "454925582"} ], request_path: "/sources/17/media/50561/force_download", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GIcaqOSsNCQ92EkAAhqh"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.11206.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/17/media/50561/force_download", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 49838}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYVi1LVjRsUkVyWjQ3MHo0anM1WFBNc25I.LCkZxNfOyFPey5BDGvRkZUfuDgh0Xg1JMRVCvv6j4gk", "from" => "gptbot(at)openai.com", "host" => "pinchflat.uiau7e.uncld.dev", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.3; +https://openai.com/gptbot)", "via" => "2.0 Caddy", "x-forwarded-for" => "74.7.227.183", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https", "x-openai-host-hash" => "454925582" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/17/media/50561/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.11206.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/17/media/50561/force_download", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 49838}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYVi1LVjRsUkVyWjQ3MHo0anM1WFBNc25I.LCkZxNfOyFPey5BDGvRkZUfuDgh0Xg1JMRVCvv6j4gk", "from" => "gptbot(at)openai.com", "host" => "pinchflat.uiau7e.uncld.dev", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.3; +https://openai.com/gptbot)", "via" => "2.0 Caddy", "x-forwarded-for" => "74.7.227.183", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https", "x-openai-host-hash" => "454925582" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{ " (truncated) 14:24:53.729 [info] {"args":{"id":1},"id":203095,"meta":{},"system_time":1767410693728833878,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 14:24:53.730 [debug] QUERY OK source="sources" db=0.4ms queue=0.1ms idle=303.3ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 14:24:53.731 [debug] QUERY OK source="settings" db=0.2ms queue=0.1ms idle=304.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:24:53.731 [debug] QUERY OK source="media_profiles" db=0.3ms idle=305.0ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 14:24:53.732 [debug] QUERY OK source="settings" db=0.3ms queue=0.1ms idle=11.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:24:53.732 [debug] Fetching recent media IDs from YouTube API for playlist: UU54SLBnD5k5U3Q6N__UjbAw 14:24:53.733 [debug] QUERY OK source="settings" db=0.2ms queue=0.1ms idle=4.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:24:53.733 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 14:24:54.159 [debug] QUERY OK source="media_items" db=3.1ms idle=425.2ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND m0."media_id" IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [1, "UYCKIroDVBY", "ynOiaE9f6NY", "At_WjGosTNM", "_s7ZzdPoVZE", "ulhKFEKXIEI", "YpQ2jupcrHk", "PetMnG6cCDw", "VdxlXCnA1DM", "uj2s7HZQigU", "rZ7Y_gPAHig", "LTmK8Ab6IFE", "sZKNVGI8xt0", "_PUZIf6VQto", "J2-1ZErtS7A", "OEyptSEM5Tw", "HLeY2_hJvRk", "DkZ5uXcDxjc", "zPWe_aBuNfM", "PZN18led4ok", "66F09ebI9gw", "Pfok4B_xyaI", "e5HEGCCadBU", "hYFsHfPquPg", "nKsnfEB29ek", "OpDh_O473Ms", "ZTtZ12XtQpg", "TphXloX3PEI", "4Qhp4VPP2Wo", "J5l7jvbp3u8", "uL_YQMkkbUg", "SAZ17l0EwxI", "fTa_T2pVwuk", "6HpTVfX0SvI", "XlIWsRyXL8U", "nM1GQNJU6LQ", "WVN1LNy1zgo", "0Fxf6_q7qHc", "dL0KPsy-Dww", "G43wJ7YyWzM", "yVy89TnL9Zg", "BR1VRJDu-gc", "-2HeoqiMC6s", "7WXyx51z5G8", "jCk-9S8PQyc", "vGEIHv1XelY", "rOI7HYGGHpo", "gNeGHhU6UaI", "gUlkwSHOT7Q", "tpf7TxliCxA", ...] 14:24:54.166 [debug] QUERY OK source="media_items" db=3.0ms idle=432.7ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [1] 14:24:54.170 [debug] QUERY OK source="tasks" db=0.5ms idle=436.1ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [203119, 1, ~U[2026-01-03 03:24:54Z], ~U[2026-01-03 03:24:54Z]] 14:24:54.171 [info] {"args":{"id":1},"id":203095,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":441734,"event":"job:stop","queue_time":420125,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 14:25:00.249 [info] {"source":"oban","duration":495,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 14:25:04.759 [info] {"args":{"id":22},"id":203096,"meta":{},"system_time":1767410704758829773,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 14:25:04.760 [debug] QUERY OK source="sources" db=0.5ms queue=0.2ms idle=1333.4ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [22] 14:25:04.761 [debug] QUERY OK source="settings" db=0.8ms queue=0.2ms idle=1334.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:25:04.763 [debug] QUERY OK source="media_profiles" db=0.7ms queue=0.1ms idle=1015.0ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 14:25:04.763 [debug] QUERY OK source="settings" db=0.3ms idle=11.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:25:04.763 [debug] Fetching recent media IDs from YouTube API for playlist: UUP1RHyOhO98Yn2rMbDBirxA 14:25:04.764 [debug] QUERY OK source="settings" db=0.2ms idle=5.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:25:04.764 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 14:25:05.078 [debug] QUERY OK source="media_items" db=1.7ms queue=0.1ms idle=316.1ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND m0."media_id" IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [22, "N5RzDzO54gQ", "5glegyagphQ", "VtiV_RfFqNM", "qNYyH7bMcbI", "MPdiQsg_zQ8", "4-VOc2Aich8", "gMrBK9rp6As", "p0lqYk8_uMI", "aKpQHxUiwxc", "KsuhL0zVo3I", "pCJcoGDsbxc", "_5AR-GKeqlk", "VcJG7rIOjb0", "vRzAE_0VnXQ", "uj_bcWLWMtw", "xRyiudwo_jM", "pTMRT4CRUoM", "W8_LEBSOsPg", "YZuP7d99kCw"] 14:25:05.081 [debug] QUERY OK source="settings" db=0.3ms idle=318.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:25:05.081 [debug] QUERY OK source="settings" db=0.3ms idle=318.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:25:05.082 [debug] Running yt-dlp command for action: get_media_attributes 14:25:05.083 [debug] QUERY OK source="settings" db=0.3ms idle=319.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:25:05.084 [debug] QUERY OK source="settings" db=0.9ms idle=319.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:25:05.085 [debug] QUERY OK source="settings" db=0.5ms idle=6.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:25:05.086 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=gMrBK9rp6As --simulate --skip-download --output /downloads/White Raven/Season %(upload_date>%Y)S/s%(upload_date>%Y)Se%(upload_date>%m%d)S00 - %(title)S.%(ext)S --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --print-to-file %(.{id,title,live_status,original_url,description,aspect_ratio,duration,upload_date,timestamp,playlist_index,filename})j /tmp/pinchflat/data/d6/3b/d63b44723891018bad91fca1655035048f44d468de7adfd67f65a63d18a80e14.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:25:09.440 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=gMrBK9rp6As --simulate --skip-download --output /downloads/White Raven/Season %(upload_date>%Y)S/s%(upload_date>%Y)Se%(upload_date>%m%d)S00 - %(title)S.%(ext)S --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --print-to-file %(.{id,title,live_status,original_url,description,aspect_ratio,duration,upload_date,timestamp,playlist_index,filename})j /tmp/pinchflat/data/d6/3b/d63b44723891018bad91fca1655035048f44d468de7adfd67f65a63d18a80e14.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 1 with: ERROR: [youtube] gMrBK9rp6As: Offline. 14:25:09.440 [error] Error creating media item 'gMrBK9rp6As' from URL: {:error, "ERROR: [youtube] gMrBK9rp6As: Offline.\n", 1} 14:25:09.442 [debug] QUERY OK source="media_items" db=1.4ms idle=1015.0ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [22] 14:25:09.444 [debug] QUERY OK source="tasks" db=0.5ms idle=1018.4ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [203120, 22, ~U[2026-01-03 03:25:09Z], ~U[2026-01-03 03:25:09Z]] 14:25:09.445 [info] {"args":{"id":22},"id":203096,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":4686216,"event":"job:stop","queue_time":110602,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 14:25:13.093 [info] {"source":"oban","duration":1293,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:25:14.789 [info] {"args":{"id":2},"id":203097,"meta":{},"system_time":1767410714789670781,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 14:25:14.791 [debug] QUERY OK source="sources" db=0.8ms idle=1364.1ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [2] 14:25:14.791 [debug] QUERY OK source="settings" db=0.6ms idle=1013.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:25:14.792 [debug] QUERY OK source="media_profiles" db=0.7ms idle=366.1ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 14:25:14.793 [debug] QUERY OK source="settings" db=0.5ms idle=11.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:25:14.793 [debug] Fetching recent media IDs from YouTube API for playlist: UUeE3lj6pLX_gCd0Yvns517Q 14:25:14.794 [debug] QUERY OK source="settings" db=0.5ms idle=4.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:25:14.794 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 14:25:15.324 [debug] QUERY OK source="media_items" db=4.8ms idle=528.3ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND m0."media_id" IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [2, "0k6I__61QDc", "tAnxIOSrasI", "qGmURDZnDhc", "vBsPoGzQPxA", "TiJoEoREmdE", "C-CkKUyzQhA", "K1UWf6n1FmY", "9VKS1P-aXSc", "kt_SNpPa2w4", "oaXa30IfZMc", "pUBcfLBwPXw", "WkG24B0xw1E", "fBQxlA3KI5U", "HbeqOllBS9o", "li1fOq_qqHM", "rsqGEZeczYw", "d7HFMZOp0S4", "oipxUVJUZrc", "cTxE_oPyD9Q", "yJlKrUX8Bvk", "pYtoIdfLeHA", "qPMGKmyQ1AA", "7W651YDFjhc", "EfUXdMBXauI", "804ky1qeBuE", "DRMng-9g9Ng", "Nzp4LPVF_7M", "1psbOjlzkyA", "IwMM9c9Q0Pw", "xhbzG8V0eSA", "-CSyf5_q-XQ", "C__g4XPdYRY", "7-FRyPsqWG0", "0-fliBPsvZI", "xLZYbjMl3hY", "qs36351JQys", "-aty2xx6kTI", "Ty7NA3HvUsk", "w6xdmHLxzSM", "-5YmR5lvMlQ", "fFbRmFdCoYc", "XkPAB-oXAoU", "rTecGGMrRKc", "tHjU0F1najQ", "Z6otzigVvWM", "9m36Ncgctbg", "B1KUJbbpoK0", "rqGLjKlA_tM", "PZDZuoa3kJE", ...] 14:25:15.332 [debug] QUERY OK source="media_items" db=6.8ms idle=534.1ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [2] 14:25:15.335 [debug] QUERY OK source="tasks" db=0.4ms idle=540.3ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [203121, 2, ~U[2026-01-03 03:25:15Z], ~U[2026-01-03 03:25:15Z]] 14:25:15.336 [info] {"args":{"id":2},"id":203097,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":545771,"event":"job:stop","queue_time":231436,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 14:25:43.095 [info] {"source":"oban","duration":1898,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:25:53.095 [info] GET /sources/11/media/59538/force_download 14:25:53.095 [debug] QUERY OK source="settings" db=0.2ms idle=668.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:25:53.096 [debug] QUERY OK source="settings" db=0.6ms idle=669.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:25:53.097 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 14:25:53.097 [error] #PID<0.11217.0> running PinchflatWeb.Endpoint (connection #PID<0.11216.0>, stream id 1) terminated Server: pinchflat.uiau7e.uncld.dev:80 (http) Request: GET /sources/11/media/59538/force_download ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/11/media/59538/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.11216.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/11/media/59538/force_download", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 50652}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "from" => "gptbot(at)openai.com", "host" => "pinchflat.uiau7e.uncld.dev", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.3; +https://openai.com/gptbot)", "via" => "2.0 Caddy", "x-forwarded-for" => "74.7.227.183", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https", "x-openai-host-hash" => "454925582" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.uiau7e.uncld.dev", method: "GET", owner: #PID<0.11217.0>, params: %{}, path_info: ["sources", "11", "media", "59538", "force_download"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.uiau7e.uncld.dev", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {10, 210, 0, 2}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"accept-encoding", "gzip, br, deflate"}, {"from", "gptbot(at)openai.com"}, {"host", "pinchflat.uiau7e.uncld.dev"}, {"user-agent", "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.3; +https://openai.com/gptbot)"}, {"via", "2.0 Caddy"}, {"x-forwarded-for", "74.7.227.183"}, {"x-forwarded-host", "pinchflat.uiau7e.uncld.dev"}, {"x-forwarded-proto", "https"}, {"x-openai-host-hash", "454925582"} ], request_path: "/sources/11/media/59538/force_download", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GIcatz5xJI_J8G8AAhuh"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.11216.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/11/media/59538/force_download", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 50652}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "from" => "gptbot(at)openai.com", "host" => "pinchflat.uiau7e.uncld.dev", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.3; +https://openai.com/gptbot)", "via" => "2.0 Caddy", "x-forwarded-for" => "74.7.227.183", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https", "x-openai-host-hash" => "454925582" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/11/media/59538/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.11216.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/11/media/59538/force_download", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 50652}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "from" => "gptbot(at)openai.com", "host" => "pinchflat.uiau7e.uncld.dev", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.3; +https://openai.com/gptbot)", "via" => "2.0 Caddy", "x-forwarded-for" => "74.7.227.183", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https", "x-openai-host-hash" => "454925582" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.uiau7e.uncld.dev", method: "GET", owner: #PID<0.11217.0>, params: %{}, path_info: ["sources", "11", "media", "59538", "force_download"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.uiau7e.uncld.dev", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {10, 210, 0, 2}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"accept-en (truncated) 14:26:00.251 [info] {"source":"oban","duration":429,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 14:26:10.952 [info] {"args":{"id":26},"id":203098,"meta":{},"system_time":1767410770951774131,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 14:26:10.953 [debug] QUERY OK source="sources" db=0.5ms queue=0.1ms idle=525.4ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [26] 14:26:10.955 [debug] QUERY OK source="settings" db=1.1ms queue=0.6ms idle=526.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:26:10.957 [debug] QUERY OK source="media_profiles" db=0.7ms queue=0.5ms idle=528.7ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 14:26:10.958 [debug] QUERY OK source="settings" db=0.2ms queue=0.1ms idle=13.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:26:10.958 [debug] Fetching recent media IDs from YouTube API for playlist: UU6NY7eg1FxCfAVX58yL0cJw 14:26:10.958 [debug] QUERY OK source="settings" db=0.1ms queue=0.1ms idle=7.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:26:10.959 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 14:26:11.448 [debug] QUERY OK source="media_items" db=3.0ms queue=0.1ms idle=491.3ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND m0."media_id" IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [26, "o2tiLxanOd0", "3Hkalon06bY", "acwCbVzHnRM", "m3Cddar422Y", "QItYx18RK4M", "iFrwlymvtTM", "CBKzBKWhNmE", "twi0ZP1ZWew", "MChkfGtdrgI", "usOf_0SOPl8", "7CamgxCV_lg", "CYW3qAtbiSg", "hkLPA0MEUFk", "Z9APq63an58", "MA2a2BtDQtE", "a23hasz0yk8", "o4tK4PhiK_c", "2-lUv1_A_KU", "W6GGXQ4xVdg", "TOIuoWmEqxo", "JRXSDo6asDk", "iAodr4mipf0", "12wArTNB9dk", "CFZ0TtEbofU", "RwW6yAVtf6Q", "9RshF2jpgLo", "MV8U7XQUpnY", "G0o-l5G0M4s", "FVOkr5w0O0I", "1IFJive9Bvc", "kuc2kAgYD8M", "jHOE86EMHvA", "CjuPAweX08c", "LH0RNHxukJs", "o6OxlF4vAuw", "Qxfr7h-PzdA", "xU_1w6OSnac", "-6G1TNBxp08", "o-ripoq_oXU", "Uevcwu2GLMs", "BAoXgNQ_wRI", "p4NWPk9B20I", "XKxqsR_4w_I", "BNtAWc-vLX4", "ktw-dS-26Gk", "Idbcu-oVtDs", "JCxqgAhaJj4", "A0vzWxUO5TA", "6M0wfDl0LEI", ...] 14:26:11.456 [debug] QUERY OK source="media_items" db=3.8ms idle=496.7ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [26] 14:26:11.460 [debug] QUERY OK source="tasks" db=0.8ms idle=500.1ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [203122, 26, ~U[2026-01-03 03:26:11Z], ~U[2026-01-03 03:26:11Z]] 14:26:11.461 [info] {"args":{"id":26},"id":203098,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":508445,"event":"job:stop","queue_time":335847,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 14:26:13.099 [info] {"source":"oban","duration":2437,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:26:43.103 [info] {"source":"oban","duration":2719,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:26:45.044 [info] {"args":{"id":6},"id":203099,"meta":{},"system_time":1767410805044391028,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 14:26:45.045 [debug] QUERY OK source="sources" db=0.2ms idle=1013.5ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [6] 14:26:45.045 [debug] QUERY OK source="settings" db=0.2ms idle=618.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:26:45.046 [debug] QUERY OK source="media_profiles" db=0.2ms idle=618.8ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 14:26:45.046 [debug] QUERY OK source="settings" db=0.3ms idle=9.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:26:45.046 [debug] Fetching recent media IDs from YouTube API for playlist: UUg0m_Ah8P_MQbnn77-vYnYw 14:26:45.047 [debug] QUERY OK source="settings" db=0.1ms idle=2.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:26:45.047 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 14:26:45.392 [debug] QUERY OK source="media_items" db=3.9ms idle=342.8ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND m0."media_id" IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [6, "9i6Qm3LV89c", "2PC3HH4izX4", "dJLpdoPNdZ8", "lqRHAbkn9bo", "nlYgNjtr904", "uHKLZ8LcCJA", "V3LW3EWUxqE", "XaTvV6zJEXk", "AjnHxtnxMhk", "vuJTLm11QmQ", "vUzRuvCi6lw", "NlxSd2y_gfI", "ivcFXtMGdE8", "m17ugzx_Ab4", "o5QiLKbHeMI", "moqdU9sMrRk", "Yi55tGTEMqQ", "rHliVvnQ5Pg", "nCZSTFM-v9k", "uasm2RENDH4", "musiLNtEyRY", "uSvqlME0IsI", "Yo0hmtg8LNc", "HOFD3h9Up9w", "uibJMXaSB7c", "NGq1EoY_r2I", "IL-UZlbO3zI", "-_txeeBP6dg", "iH7BiZvsczM", "rIKuiZVHfZo", "HRw20b6hb_s", "xOQPha-de4A", "L6IXwj-_X1k", "_7--BDD2pxk", "Xaq53-12iW8", "bfb-ZBwdvpo", "3DLbHio3ivA", "xhpwyar65ms", "UzEr8RISXds", "tHU6PeO4WDs", "2z1AaBGzA1g", "y-t3hyj7Mz8", "5ZUXEQ6d0dM", "pn8GF5HaKZc", "wH3XASrC2DA", "C_oeOAG0G5E", "c8gYHg1lZCg", "cPEXUpZ6CWk", "jST7T0L_k_w", ...] 14:26:45.398 [debug] QUERY OK source="media_items" db=3.9ms idle=348.9ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [6] 14:26:45.403 [debug] QUERY OK source="tasks" db=1.0ms idle=355.2ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [203123, 6, ~U[2026-01-03 03:26:45Z], ~U[2026-01-03 03:26:45Z]] 14:26:45.405 [info] {"args":{"id":6},"id":203099,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":359442,"event":"job:stop","queue_time":495467,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 14:26:59.071 [info] GET /sources/13/media/33762/force_download 14:26:59.072 [debug] QUERY OK source="settings" db=0.2ms idle=644.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:26:59.072 [debug] QUERY OK source="settings" db=0.3ms idle=645.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:26:59.072 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 14:26:59.073 [error] #PID<0.11226.0> running PinchflatWeb.Endpoint (connection #PID<0.11225.0>, stream id 1) terminated Server: pinchflat.uiau7e.uncld.dev:80 (http) Request: GET /sources/13/media/33762/force_download ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/13/media/33762/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.11225.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/13/media/33762/force_download", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 46878}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "from" => "gptbot(at)openai.com", "host" => "pinchflat.uiau7e.uncld.dev", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.3; +https://openai.com/gptbot)", "via" => "2.0 Caddy", "x-forwarded-for" => "74.7.227.183", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https", "x-openai-host-hash" => "454925582" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.uiau7e.uncld.dev", method: "GET", owner: #PID<0.11226.0>, params: %{}, path_info: ["sources", "13", "media", "33762", "force_download"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.uiau7e.uncld.dev", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {10, 210, 0, 2}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"accept-encoding", "gzip, br, deflate"}, {"from", "gptbot(at)openai.com"}, {"host", "pinchflat.uiau7e.uncld.dev"}, {"user-agent", "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.3; +https://openai.com/gptbot)"}, {"via", "2.0 Caddy"}, {"x-forwarded-for", "74.7.227.183"}, {"x-forwarded-host", "pinchflat.uiau7e.uncld.dev"}, {"x-forwarded-proto", "https"}, {"x-openai-host-hash", "454925582"} ], request_path: "/sources/13/media/33762/force_download", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GIcaxprvhpezYNoAAhyB"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.11225.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/13/media/33762/force_download", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 46878}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "from" => "gptbot(at)openai.com", "host" => "pinchflat.uiau7e.uncld.dev", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.3; +https://openai.com/gptbot)", "via" => "2.0 Caddy", "x-forwarded-for" => "74.7.227.183", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https", "x-openai-host-hash" => "454925582" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/13/media/33762/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.11225.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/13/media/33762/force_download", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 46878}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "from" => "gptbot(at)openai.com", "host" => "pinchflat.uiau7e.uncld.dev", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.3; +https://openai.com/gptbot)", "via" => "2.0 Caddy", "x-forwarded-for" => "74.7.227.183", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https", "x-openai-host-hash" => "454925582" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.uiau7e.uncld.dev", method: "GET", owner: #PID<0.11226.0>, params: %{}, path_info: ["sources", "13", "media", "33762", "force_download"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.uiau7e.uncld.dev", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {10, 210, 0, 2}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"accept-en (truncated) 14:27:00.252 [info] {"source":"oban","duration":345,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 14:27:09.096 [info] {"args":{"id":9},"id":203100,"meta":{},"system_time":1767410829096146109,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 14:27:09.097 [debug] QUERY OK source="sources" db=0.3ms idle=669.6ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [9] 14:27:09.098 [debug] QUERY OK source="settings" db=0.7ms idle=670.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:27:09.099 [debug] QUERY OK source="media_profiles" db=0.7ms idle=671.2ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 14:27:09.099 [debug] QUERY OK source="settings" db=0.4ms idle=10.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:27:09.099 [debug] Fetching recent media IDs from YouTube API for playlist: UUy0Pr5u-MwGXXzp_GDd4m_g 14:27:09.100 [debug] QUERY OK source="settings" db=0.3ms idle=3.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:27:09.100 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 14:27:09.560 [debug] QUERY OK source="media_items" db=4.8ms idle=458.0ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND m0."media_id" IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [9, "97DBlIPSMkI", "V7Q9VnfzRqE", "Nub2m3iioSw", "Tpk6NNZubqU", "L4Eh-MtBFFk", "sa8p75KJqOc", "2gpPC0vsry0", "B2l4YfAav6M", "iL1qKxcaZnU", "NH5AAcLn03o", "8fOaCUvVQpY", "8aQ7sJ9EyaY", "ld0ngHU3YQ0", "uKzsA5kc8jw", "_A1dxw_T6dw", "TFVA0Bc5ajA", "IgFSOa0RBxs", "fGAe2cenBhs", "a6_0p8e42Y4", "vnR7jnJYN-k", "db6_ragog48", "SMKDYoXrZzw", "-fM_uGwlRlU", "kRxJ2g3T0zs", "GgU7L-z0kbA", "yFZJ6Qb8mDY", "YkyTbtgcfJU", "k01ARI01oMU", "ToFKhGfGgc0", "MU8JlJIuwh4", "IY36QIh6VG8", "brtcZFHW0P4", "A39Glu9I9fk", "Ib_1jixUkLw", "c9UIDwF7oS4", "CcSE-YHRJP4", "Tpmb_mTKuhs", "yNbz6f5dMLE", "BAVQcOWZi-Y", "Fa7RxeYNUTw", "teIoBQdGT5s", "UqykI_3CT-g", "vBeWkDTK6Eg", "qOp_nyKqmic", "fEqSlPpXHYk", "lII4lxNpPVg", "BaxD8BI3wI4", "me_afppRbyI", "C69B2k3fAvs", ...] 14:27:09.566 [debug] QUERY OK source="media_items" db=3.7ms idle=464.9ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [9] 14:27:09.571 [debug] QUERY OK source="tasks" db=0.5ms idle=469.7ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [203124, 9, ~U[2026-01-03 03:27:09Z], ~U[2026-01-03 03:27:09Z]] 14:27:09.571 [info] {"args":{"id":9},"id":203100,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":475001,"event":"job:stop","queue_time":325559,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 14:27:13.109 [info] {"source":"oban","duration":5158,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:27:16.130 [info] {"args":{"id":10},"id":203101,"meta":{},"system_time":1767410836130639258,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 14:27:16.132 [debug] QUERY OK source="sources" db=0.8ms queue=0.1ms idle=704.3ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [10] 14:27:16.133 [debug] QUERY OK source="settings" db=0.5ms queue=0.1ms idle=705.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:27:16.134 [debug] QUERY OK source="media_profiles" db=0.6ms queue=0.1ms idle=706.5ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 14:27:16.135 [debug] QUERY OK source="settings" db=0.6ms queue=0.1ms idle=11.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:27:16.135 [debug] Fetching recent media IDs from YouTube API for playlist: UUmHz7DQbbkcY_UoWY8bBJLw 14:27:16.136 [debug] QUERY OK source="settings" db=0.4ms queue=0.1ms idle=5.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:27:16.136 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 14:27:16.524 [debug] QUERY OK source="media_items" db=2.9ms idle=388.7ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND m0."media_id" IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [10, "PhjtM9ePmYY", "BYRqpIciNLg", "KKoDQ42Fcpk", "AifAIqHezb8", "sjsS60OTXSQ", "KVouvdlUtGQ", "Th4RJNVZN3Q", "a9Zj-iWYC4w", "Z2_oFD9DMd0", "OW9WywZF_d4", "hFSwWzxrqUA", "XsPrNwyLDJM", "9NUcKPnPMEw", "GvP1jo9RstE", "8jul3DEwgMY", "e4K0Co-JeKQ", "wxoYf3KBlis", "YFQm8Hk73ug", "iu5rnQkfO6M", "RESslu3Bhuk", "vn9VDbacUgQ", "mLozqDnhqpQ", "GWXCCBsOMSg", "OXIpbrvFxfE", "hbZb1Q0mM7k", "lj2JTO1L1Tc", "dGjMw1SkmjU", "vBQFfmlTK_4", "91WqepC8kS0", "UUZfxQhKmfA", "aPsq5nqvhxg", "AJ7atBkisOU", "2fZ0nkP5dfo", "qKZXQGCLRJY", "F26dxTMmW10", "cYPuhhATDXc", "uLrOyIpjkZ8", "kDu56nXRqGQ", "I4lBTlClwww", "h23xksD0dN0", "SgameZUfeGo", "NPgbgiRJCxA", "-v88e4T8i_E", "HkgV_-nJOuE", "3h1vM0lIrpM", "gjExqY_iB38", "5ScP_aPBEiQ", "t5CkW-CKTZs", "gKKRYcy4BbU", ...] 14:27:16.526 [debug] QUERY OK source="settings" db=0.3ms idle=393.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:27:16.527 [debug] QUERY OK source="settings" db=0.3ms idle=392.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:27:16.527 [debug] Running yt-dlp command for action: get_media_attributes 14:27:16.529 [debug] QUERY OK source="settings" db=0.4ms idle=393.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:27:16.530 [debug] QUERY OK source="settings" db=0.3ms idle=393.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:27:16.531 [debug] QUERY OK source="settings" db=0.5ms idle=6.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:27:16.531 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=Z2_oFD9DMd0 --simulate --skip-download --output /downloads/Switch Angel/Season %(upload_date>%Y)S/s%(upload_date>%Y)Se%(upload_date>%m%d)S00 - %(title)S.%(ext)S --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --print-to-file %(.{id,title,live_status,original_url,description,aspect_ratio,duration,upload_date,timestamp,playlist_index,filename})j /tmp/pinchflat/data/5c/ba/5cba88e3e90a5ca4bb0b1eda1a82a5d291080fc1e8fd658ca4d8c3ebdd9885b8.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:27:21.077 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=Z2_oFD9DMd0 --simulate --skip-download --output /downloads/Switch Angel/Season %(upload_date>%Y)S/s%(upload_date>%Y)Se%(upload_date>%m%d)S00 - %(title)S.%(ext)S --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --print-to-file %(.{id,title,live_status,original_url,description,aspect_ratio,duration,upload_date,timestamp,playlist_index,filename})j /tmp/pinchflat/data/5c/ba/5cba88e3e90a5ca4bb0b1eda1a82a5d291080fc1e8fd658ca4d8c3ebdd9885b8.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 1 with: ERROR: [youtube] Z2_oFD9DMd0: This live event will begin in a few moments. 14:27:21.077 [error] Error creating media item 'Z2_oFD9DMd0' from URL: {:error, "ERROR: [youtube] Z2_oFD9DMd0: This live event will begin in a few moments.\n", 1} 14:27:21.080 [debug] QUERY OK source="media_items" db=1.3ms queue=0.1ms idle=937.4ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [10] 14:27:21.082 [debug] QUERY OK source="tasks" db=0.3ms idle=655.2ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [203125, 10, ~U[2026-01-03 03:27:21Z], ~U[2026-01-03 03:27:21Z]] 14:27:21.083 [info] {"args":{"id":10},"id":203101,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":4952384,"event":"job:stop","queue_time":505318,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 14:27:26.173 [info] {"args":{"id":11},"id":203102,"meta":{},"system_time":1767410846172820919,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 14:27:26.174 [debug] QUERY OK source="sources" db=0.6ms queue=0.2ms idle=1746.3ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [11] 14:27:26.175 [debug] QUERY OK source="settings" db=0.7ms queue=0.2ms idle=1747.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:27:26.177 [debug] QUERY OK source="media_profiles" db=0.6ms idle=1015.4ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 14:27:26.177 [debug] QUERY OK source="settings" db=0.4ms queue=0.1ms idle=11.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:27:26.178 [debug] Fetching recent media IDs from YouTube API for playlist: UUJ901NqoRaXMnIm7aOjLyuA 14:27:26.179 [debug] QUERY OK source="settings" db=0.3ms queue=0.1ms idle=5.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:27:26.179 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 14:27:26.734 [debug] QUERY OK source="media_items" db=3.0ms idle=556.2ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND m0."media_id" IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [11, "1ji7g8qZJ_4", "xP5WmZg7OMg", "HBoV87Jndh8", "-zpzRklxMEo", "9AX85j6Lp4M", "p2U9d4FWDaI", "hfT6XVSa2xE", "qBOKYwe8NzA", "Cf5jL5JNq7k", "bAV0y2acB9c", "XE6JvrChQ_Q", "Efv456Ks9ms", "qgiJ4C5s46U", "KaVC_mTFqHk", "M6gat-hai0I", "_xwFJzOtQv0", "Ao-M_YvfhXY", "SKHWQwf0ago", "gmuFtWZG3v8", "H4oeJ87TMt4", "rS2fDo6mhS8", "aOF6Pe_bTeI", "x8B3Z91qkoE", "fVvYTWAHoBQ", "8r6xqWTqcPQ", "k677A--BwGE", "CSTtrz8t1eg", "w6Ej3Iim4Ic", "jO8S8_KX6p0", "tslsVdOjWFM", "dckL2BCDYmQ", "E3N8_pRRtGM", "qeOEDUgy5xA", "MIPvNqPwMxc", "V2GelRPp5fg", "jWH5H6Y6T-A", "1ObIAwtqt9k", "yVdv1xVggZ4", "Pxpz4211gMI", "UEUAHI0AZu4", "gitCR-iTofw", "eTg2rHYqUZc", "QnOIm4U7Dzs", "RYNFRbP4OWQ", "R3kNCz120XM", "vMflt2fJZYw", "4DkhBa_L_4E", "4IqFTPw6Mzk", "AepfCktyPLk", ...] 14:27:26.743 [debug] QUERY OK source="media_items" db=5.3ms idle=561.9ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [11] 14:27:26.749 [debug] QUERY OK source="tasks" db=0.6ms idle=14.5ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [203126, 11, ~U[2026-01-03 03:27:26Z], ~U[2026-01-03 03:27:26Z]] 14:27:26.750 [info] {"args":{"id":11},"id":203102,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":576459,"event":"job:stop","queue_time":258606,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 14:27:43.113 [info] {"source":"oban","duration":2691,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:28:00.253 [info] {"source":"oban","duration":574,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 14:28:02.807 [info] GET /sources/11/media/55269/force_download 14:28:02.809 [debug] QUERY OK source="settings" db=1.2ms queue=0.1ms idle=1381.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:28:02.810 [debug] QUERY OK source="settings" db=0.7ms queue=0.2ms idle=549.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:28:02.811 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 14:28:02.812 [error] #PID<0.11236.0> running PinchflatWeb.Endpoint (connection #PID<0.11235.0>, stream id 1) terminated Server: pinchflat.uiau7e.uncld.dev:80 (http) Request: GET /sources/11/media/55269/force_download ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/11/media/55269/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.11235.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/11/media/55269/force_download", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 40894}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "from" => "gptbot(at)openai.com", "host" => "pinchflat.uiau7e.uncld.dev", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.3; +https://openai.com/gptbot)", "via" => "2.0 Caddy", "x-forwarded-for" => "74.7.227.183", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https", "x-openai-host-hash" => "454925582" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.uiau7e.uncld.dev", method: "GET", owner: #PID<0.11236.0>, params: %{}, path_info: ["sources", "11", "media", "55269", "force_download"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.uiau7e.uncld.dev", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {10, 210, 0, 2}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"accept-encoding", "gzip, br, deflate"}, {"from", "gptbot(at)openai.com"}, {"host", "pinchflat.uiau7e.uncld.dev"}, {"user-agent", "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.3; +https://openai.com/gptbot)"}, {"via", "2.0 Caddy"}, {"x-forwarded-for", "74.7.227.183"}, {"x-forwarded-host", "pinchflat.uiau7e.uncld.dev"}, {"x-forwarded-proto", "https"}, {"x-openai-host-hash", "454925582"} ], request_path: "/sources/11/media/55269/force_download", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GIca1XHl5cBmjQcAAh3B"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.11235.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/11/media/55269/force_download", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 40894}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "from" => "gptbot(at)openai.com", "host" => "pinchflat.uiau7e.uncld.dev", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.3; +https://openai.com/gptbot)", "via" => "2.0 Caddy", "x-forwarded-for" => "74.7.227.183", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https", "x-openai-host-hash" => "454925582" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/11/media/55269/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.11235.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/11/media/55269/force_download", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 40894}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "from" => "gptbot(at)openai.com", "host" => "pinchflat.uiau7e.uncld.dev", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.3; +https://openai.com/gptbot)", "via" => "2.0 Caddy", "x-forwarded-for" => "74.7.227.183", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https", "x-openai-host-hash" => "454925582" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.uiau7e.uncld.dev", method: "GET", owner: #PID<0.11236.0>, params: %{}, path_info: ["sources", "11", "media", "55269", "force_download"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.uiau7e.uncld.dev", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {10, 210, 0, 2}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"accept-en (truncated) 14:28:05.279 [info] {"args":{"id":15},"id":203103,"meta":{},"system_time":1767410885279523667,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 14:28:05.280 [debug] QUERY OK source="sources" db=0.5ms queue=0.1ms idle=853.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [15] 14:28:05.281 [debug] QUERY OK source="settings" db=0.4ms queue=0.1ms idle=854.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:28:05.283 [debug] QUERY OK source="media_profiles" db=0.6ms queue=0.1ms idle=854.9ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 14:28:05.283 [debug] QUERY OK source="settings" db=0.4ms queue=0.1ms idle=12.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:28:05.284 [debug] Fetching recent media IDs from YouTube API for playlist: UU5qRAYQmCLx8hFGIiTWSQvA 14:28:05.285 [debug] QUERY OK source="settings" db=0.3ms queue=0.1ms idle=5.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:28:05.285 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 14:28:05.732 [debug] QUERY OK source="media_items" db=4.7ms idle=446.3ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND m0."media_id" IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [15, "EMmIdkwn6a4", "EBT3EIoJpDc", "P2j2jM33fbk", "KuYhCywx8JM", "EteM8YNAFu8", "-KN9sfrroJA", "35D6yzUQM8I", "pIqvmN8ePkc", "rR5RqL2cjPE", "B2mmx85ZIsE", "b-jTeTJ1ekk", "Qa4dYWqfgmg", "TZZgrQEsl4c", "hMFEigXIhgA", "yf8ozrYeFEk", "QoCmQRZKU_c", "Qa9rFTiItTE", "Kxw9tq49VBM", "aLj4QgEf7gQ", "-D7c5td5vhw", "UNJUpex0blc", "Afa2PJq3okY", "r9A1srY7LdU", "m6YZoOWrLlk", "RKSlnQcuZt4", "qEjkDPJmKIo", "fZirHVq8wp0", "jdB56zAMJgE", "F92Oe7JuDtI", "luEgOCX58gw", "9CkNfdQpsuo", "eC3Mv474A8c", "mq6lsIgLLqY", "Wqmn4OTW6Fw", "4yYMQFLVRNc", "TsdMEmH2Lsw", "HQeTYLxz6iY", "V-JtebgnFoM", "2cXS3i36Kh8", "wznCZtGitN8", "2tYVGxZMOiQ", "9bxljq6ljbE", "9hHVjpo_HDA", "w8bqGx4ZtYQ", "yFYGd9irJ5k", "WTfhL2-cT1U", "LCR3ZsqWhuo", "Tj09jojsiaM", "_GZvVqjqlM0", ...] 14:28:05.743 [debug] QUERY OK source="media_items" db=9.1ms idle=452.7ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [15] 14:28:05.746 [debug] QUERY OK source="tasks" db=0.4ms idle=461.1ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [203127, 15, ~U[2026-01-03 03:28:05Z], ~U[2026-01-03 03:28:05Z]] 14:28:05.747 [info] {"args":{"id":15},"id":203103,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":467256,"event":"job:stop","queue_time":282288,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 14:28:10.292 [info] {"args":{"id":18},"id":203104,"meta":{},"system_time":1767410890292522382,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 14:28:10.293 [debug] QUERY OK source="sources" db=0.3ms queue=0.1ms idle=865.9ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [18] 14:28:10.294 [debug] QUERY OK source="settings" db=0.4ms queue=0.1ms idle=866.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:28:10.295 [debug] QUERY OK source="media_profiles" db=0.3ms idle=867.7ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 14:28:10.296 [debug] QUERY OK source="settings" db=0.3ms queue=0.1ms idle=10.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:28:10.296 [debug] Fetching recent media IDs from YouTube API for playlist: UUuisDAMnvHMYuLFRedMgmVw 14:28:10.297 [debug] QUERY OK source="settings" db=0.2ms queue=0.1ms idle=4.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:28:10.297 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 14:28:10.702 [debug] QUERY OK source="media_items" db=2.2ms queue=0.1ms idle=405.9ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND m0."media_id" IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [18, "mf2Em7F_qDM", "PjvBtlIGGQU", "EF_PO-pALOQ", "j9eh7huEF4A", "y3FGuwfGzL0", "ZWH_eu9wdUE", "UccWWifa8jA", "0L8xWydKOhk", "CkSloYV3ay4", "SkQ7ywGW2HY", "QM3qu001Xdk", "jOTurZWIEmw", "pojDco-WhA4", "GD19Y1VYBKY", "cvViWSBLu-U", "wXm5ocXv9ho", "uB1Tk9eXQbk", "I7vb-PGArW4", "0h9qvAA5dfQ", "7yx-SecBATo", "oj1ySj7TVJk", "dtTdjRB4Q4g", "mpfcVNb8Mhs", "D3MFnCKv2Mc", "458_RTLWN2E", "W26HiyQ5k1s", "w4NDxPYJs1I", "cxuEV05UN7U", "5cPjR5FVDOw", "nJhbZNSrP4c", "X9Eu7mui35E", "wrgZHIpa6F0", "JEN7jfNqy1A", "v31DYiS2LbY", "iJfD5wWLvuM", "qPVTMbiyPLE", "rM_nvsztYlw", "IoD1j3ZG-SQ", "DDnqxbWvIgQ", "HIhF6C1yc7M", "DlNIxjiqQvs", "JO0-kOXXMEw", "2DihqSsed3w", "uDlvlF5iKz8", "v2jg_5WZ41o", "JekH9K8_SS8", "xVV_6qW_Ho8", "qYOABpvD49s", "VAw8zvyLmfE", ...] 14:28:10.707 [debug] QUERY OK source="media_items" db=2.6ms idle=410.0ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [18] 14:28:10.710 [debug] QUERY OK source="tasks" db=0.3ms idle=412.7ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [203128, 18, ~U[2026-01-03 03:28:10Z], ~U[2026-01-03 03:28:10Z]] 14:28:10.711 [info] {"args":{"id":18},"id":203104,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":418271,"event":"job:stop","queue_time":342549,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 14:28:13.118 [info] {"source":"oban","duration":3946,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:28:21.328 [info] {"args":{"id":16},"id":203105,"meta":{},"system_time":1767410901327940613,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 14:28:21.329 [debug] QUERY OK source="sources" db=0.5ms queue=0.1ms idle=901.7ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [16] 14:28:21.330 [debug] QUERY OK source="settings" db=0.4ms queue=0.1ms idle=902.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:28:21.331 [debug] QUERY OK source="media_profiles" db=0.5ms decode=0.1ms idle=903.7ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 14:28:21.332 [debug] QUERY OK source="settings" db=0.3ms idle=12.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:28:21.332 [debug] Fetching recent media IDs from YouTube API for playlist: UUPPfK7Nq_yQR84rn1wcTXBg 14:28:21.333 [debug] QUERY OK source="settings" db=0.2ms queue=0.1ms idle=5.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:28:21.333 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 14:28:21.692 [debug] QUERY OK source="media_items" db=3.1ms queue=0.1ms idle=359.0ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND m0."media_id" IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [16, "BiTNUZ2zONY", "7pVLE7ggkcc", "YAh-xEteBz4", "6hNpMT5OwGo", "vx3oGZYqxm4", "7W_ZSNuS-4w", "CxUC2HXvO84", "RxapAZRYJ6I", "f2ainZL8Tzk", "KJtASaKc95g", "yBCh5cyI0Po", "dg_HQL3GBcY", "ZiVvXPpo0eE", "YO1TnWptv3o", "HwnBnsQBeOA", "CCE2v3oIa74", "OWVPYr9e76Y", "VApJtIyMEec", "XtOIQYVq26o", "gZL1KzV54Cw", "kmU-Eazta1s", "XXthHXEpEP8", "dPw_HkMgYI0", "rxq-TvgNCBU", "SaCbUtTuLhA", "TWLqSk4ZlN0", "p7_rduK5WA0", "lNZ56C-f4a8", "GlK3f1cs_l4", "Yabwyb14-BQ", "WupRwvJ7sOc", "MhpoNL1gZbw", "yUfm6AbtJ0g", "y8zfgIgZ4c0", "gOwjmKMmkV4", "aTiunvocl5c", "KebjX3KEgWQ", "0T2MYXljL5o", "i7sbS92R4cg", "66CDGzjLBtY", "T_W0FWiJmM8", "u_80rUKItGc", "C9_wibbg1Ug", "A4mg1ZUb-7s", "YmUfZt4Ku9s", "DoWsgrlIjYU", "gc5ojxTuwOg", "3AMdPMoGJus", "htYY8VwN-9g", ...] 14:28:21.698 [debug] QUERY OK source="media_items" db=1.7ms queue=0.1ms idle=366.0ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [16] 14:28:21.702 [debug] QUERY OK source="tasks" db=0.4ms idle=368.2ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [203129, 16, ~U[2026-01-03 03:28:21Z], ~U[2026-01-03 03:28:21Z]] 14:28:21.703 [info] {"args":{"id":16},"id":203105,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":374319,"event":"job:stop","queue_time":330259,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 14:28:43.122 [info] {"source":"oban","duration":2944,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:29:00.255 [info] {"source":"oban","duration":749,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 14:29:03.370 [info] GET /sources/17/media/50244/force_download 14:29:03.372 [debug] QUERY OK source="settings" db=0.8ms idle=1944.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:29:03.373 [debug] QUERY OK source="settings" db=0.5ms idle=1945.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:29:03.373 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 14:29:03.373 [error] #PID<0.11246.0> running PinchflatWeb.Endpoint (connection #PID<0.11245.0>, stream id 1) terminated Server: pinchflat.uiau7e.uncld.dev:80 (http) Request: GET /sources/17/media/50244/force_download ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/17/media/50244/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.11245.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/17/media/50244/force_download", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 58552}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "from" => "gptbot(at)openai.com", "host" => "pinchflat.uiau7e.uncld.dev", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.3; +https://openai.com/gptbot)", "via" => "2.0 Caddy", "x-forwarded-for" => "74.7.227.183", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https", "x-openai-host-hash" => "454925582" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.uiau7e.uncld.dev", method: "GET", owner: #PID<0.11246.0>, params: %{}, path_info: ["sources", "17", "media", "50244", "force_download"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.uiau7e.uncld.dev", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {10, 210, 0, 2}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"accept-encoding", "gzip, br, deflate"}, {"from", "gptbot(at)openai.com"}, {"host", "pinchflat.uiau7e.uncld.dev"}, {"user-agent", "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.3; +https://openai.com/gptbot)"}, {"via", "2.0 Caddy"}, {"x-forwarded-for", "74.7.227.183"}, {"x-forwarded-host", "pinchflat.uiau7e.uncld.dev"}, {"x-forwarded-proto", "https"}, {"x-openai-host-hash", "454925582"} ], request_path: "/sources/17/media/50244/force_download", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GIca44vCv6fl224AAh8B"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.11245.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/17/media/50244/force_download", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 58552}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "from" => "gptbot(at)openai.com", "host" => "pinchflat.uiau7e.uncld.dev", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.3; +https://openai.com/gptbot)", "via" => "2.0 Caddy", "x-forwarded-for" => "74.7.227.183", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https", "x-openai-host-hash" => "454925582" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/17/media/50244/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.11245.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/17/media/50244/force_download", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 58552}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "from" => "gptbot(at)openai.com", "host" => "pinchflat.uiau7e.uncld.dev", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.3; +https://openai.com/gptbot)", "via" => "2.0 Caddy", "x-forwarded-for" => "74.7.227.183", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https", "x-openai-host-hash" => "454925582" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.uiau7e.uncld.dev", method: "GET", owner: #PID<0.11246.0>, params: %{}, path_info: ["sources", "17", "media", "50244", "force_download"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.uiau7e.uncld.dev", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {10, 210, 0, 2}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"accept-en (truncated) 14:29:13.127 [info] {"source":"oban","duration":3433,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:29:23.512 [info] {"args":{"id":20},"id":203106,"meta":{},"system_time":1767410963512244295,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 14:29:23.513 [debug] QUERY OK source="sources" db=0.8ms idle=1085.6ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [20] 14:29:23.514 [debug] QUERY OK source="settings" db=0.5ms idle=1013.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:29:23.515 [debug] QUERY OK source="media_profiles" db=0.8ms idle=87.7ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 14:29:23.516 [debug] QUERY OK source="settings" db=0.4ms idle=10.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:29:23.516 [debug] Fetching recent media IDs from YouTube API for playlist: UU3HjB3X8jeENm46HCkI0Inw 14:29:23.517 [debug] QUERY OK source="settings" db=0.4ms idle=4.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:29:23.517 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 14:29:23.987 [debug] QUERY OK source="media_items" db=5.8ms idle=468.2ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND m0."media_id" IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [20, "CISwNCR8EXc", "EiIJqc5mV90", "8xJUjtnu72E", "Whh2rDVxvYg", "VybtaBZZqCg", "fuIOAraiRAY", "Ri4qqynMLHk", "xglNhNm95KQ", "5hEq1j_TsEY", "9f5iUsFWqoo", "0SXIhVupLZY", "3gAJpHP3yg4", "8zlnEbQgP74", "EnTFdexbFrM", "P3AU8vUwvAs", "4dQvS_n0uy4", "T5CRSwoP5_w", "cd8IcmBLpXc", "L4nAcT3QYkA", "5gskEcRE1uo", "1xywnh3DqFQ", "fXeqjU4tHqo", "YBMxdPCG_PY", "GB5_4JUB9hc", "EtAUdnvt0kc", "y-5D2HhLbso", "q8kP0pRFRMc", "8mQkTPoWfPo", "U5I92UivGzU", "UoMTKhqTf1U", "oIvzxlDViTo", "kCnh99-yZIs", "orABz0cfQZY", "VKt2PXkavyU", "kYwyB7o7BJs", "UB1FC4Nim1Y", "kN_eMzoJJmA", "4hdpejFLkPc", "ArSlY77uV1w", "2me_AlMFJh8", "OlKsICCPadE", "SjpJZ66rGaU", "iRZp_9irH2g", "CN9qeuO04A4", "BUnuun2sL-8", "XSIfSz3ZEGc", "hW5pHqeC1t4", "_cJV_l9tlaU", "ChT4bsCpwcU", ...] 14:29:23.998 [debug] QUERY OK source="media_items" db=8.7ms idle=475.2ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [20] 14:29:24.003 [debug] QUERY OK source="tasks" db=0.9ms idle=485.5ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [203130, 20, ~U[2026-01-03 03:29:24Z], ~U[2026-01-03 03:29:24Z]] 14:29:24.005 [info] {"args":{"id":20},"id":203106,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":491578,"event":"job:stop","queue_time":168831,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 14:29:26.522 [info] {"args":{"id":21},"id":203107,"meta":{},"system_time":1767410966522685022,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 14:29:26.524 [debug] QUERY OK source="sources" db=0.9ms idle=1096.2ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [21] 14:29:26.525 [debug] QUERY OK source="settings" db=0.6ms idle=1097.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:29:26.526 [debug] QUERY OK source="media_profiles" db=0.8ms idle=1014.3ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 14:29:26.527 [debug] QUERY OK source="settings" db=0.6ms idle=11.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:29:26.527 [debug] Fetching recent media IDs from YouTube API for playlist: UU2-i3KuYoODXsM99Z3-Gm0A 14:29:26.528 [debug] QUERY OK source="settings" db=0.3ms queue=0.1ms idle=4.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:29:26.528 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 14:29:26.909 [debug] QUERY OK source="media_items" db=4.7ms idle=379.9ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND m0."media_id" IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [21, "J5rMffRWoaE", "SpNjg65s29I", "8YoFYb6ahAc", "2z0gjjea0mQ", "2d3dU0R4Sk4", "_TFHZ9W3Jt8", "dqjpFcJG5Cc", "Pm0PXgXMNVY", "YXwzRiYgHHc", "mUK6UT_7PZo", "nE49QFWymsI", "WY4rfxfFsVA", "LHyVvVpA0xM", "HYIwk4qL2os", "RZBQe4RLdZ8", "DN5ES5PlK6c", "OaO4UInG53A", "UqcJk1mPcnQ", "NqSJZesKtFs", "3bsFFOwsQzA", "EaXJ1rQ2v5k", "jnV5Ptgg1Xc", "rXghFt-g_OM", "Y_MU28GV-M0", "OZ1fXb4gcv0", "t7JeRNvBG40", "XG41sdzNz7I", "rQFtIiVV7RA", "TviKrv1FTzc", "0iH3eN6DUbM", "AjzhbnNiJO0", "3Y2fdnw7AwM", "8Z_XpRjS2oo", "RY1Nnw_qOGc", "pUB0TU9UQhI", "eVR3mgSxjUk", "5hGYObRZMPQ", "4MemHNHi_YE", "yM6u1-_JNXo", "VGLq2Tjokl4", "XpV4r2KB0UA", "cvrpvL1kO_8", "Q4kS9l81A0k", "Mq47ro7Pc00", "GAu1Y-5EPeM", "dNIc1vTlbDc", "S1zqKNfggRQ", "zquTrv6kv-U", "-H6sKLcAL9I", ...] 14:29:26.919 [debug] QUERY OK source="media_items" db=8.6ms idle=385.2ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [21] 14:29:26.922 [debug] QUERY OK source="tasks" db=0.8ms idle=393.8ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [203131, 21, ~U[2026-01-03 03:29:26Z], ~U[2026-01-03 03:29:26Z]] 14:29:26.923 [info] {"args":{"id":21},"id":203107,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":400228,"event":"job:stop","queue_time":353097,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 14:29:43.130 [info] {"source":"oban","duration":3074,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:30:00.257 [info] {"source":"oban","duration":499,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 14:30:07.361 [info] GET /sources/11/media/58549/force_download 14:30:07.363 [debug] QUERY OK source="settings" db=1.0ms queue=0.1ms idle=1935.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:30:07.364 [debug] QUERY OK source="settings" db=0.8ms queue=0.1ms idle=1720.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:30:07.365 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 14:30:07.366 [error] #PID<0.11256.0> running PinchflatWeb.Endpoint (connection #PID<0.11255.0>, stream id 1) terminated Server: pinchflat.uiau7e.uncld.dev:80 (http) Request: GET /sources/11/media/58549/force_download ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/11/media/58549/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.11255.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/11/media/58549/force_download", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 46124}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "from" => "gptbot(at)openai.com", "host" => "pinchflat.uiau7e.uncld.dev", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.3; +https://openai.com/gptbot)", "via" => "2.0 Caddy", "x-forwarded-for" => "74.7.227.183", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https", "x-openai-host-hash" => "454925582" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.uiau7e.uncld.dev", method: "GET", owner: #PID<0.11256.0>, params: %{}, path_info: ["sources", "11", "media", "58549", "force_download"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.uiau7e.uncld.dev", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {10, 210, 0, 2}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"accept-encoding", "gzip, br, deflate"}, {"from", "gptbot(at)openai.com"}, {"host", "pinchflat.uiau7e.uncld.dev"}, {"user-agent", "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.3; +https://openai.com/gptbot)"}, {"via", "2.0 Caddy"}, {"x-forwarded-for", "74.7.227.183"}, {"x-forwarded-host", "pinchflat.uiau7e.uncld.dev"}, {"x-forwarded-proto", "https"}, {"x-openai-host-hash", "454925582"} ], request_path: "/sources/11/media/58549/force_download", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GIca8nHfSzyOMqkAAPFi"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.11255.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/11/media/58549/force_download", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 46124}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "from" => "gptbot(at)openai.com", "host" => "pinchflat.uiau7e.uncld.dev", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.3; +https://openai.com/gptbot)", "via" => "2.0 Caddy", "x-forwarded-for" => "74.7.227.183", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https", "x-openai-host-hash" => "454925582" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/11/media/58549/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.11255.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/11/media/58549/force_download", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 46124}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "from" => "gptbot(at)openai.com", "host" => "pinchflat.uiau7e.uncld.dev", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.3; +https://openai.com/gptbot)", "via" => "2.0 Caddy", "x-forwarded-for" => "74.7.227.183", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https", "x-openai-host-hash" => "454925582" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.uiau7e.uncld.dev", method: "GET", owner: #PID<0.11256.0>, params: %{}, path_info: ["sources", "11", "media", "58549", "force_download"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.uiau7e.uncld.dev", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {10, 210, 0, 2}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"accept-en (truncated) 14:30:13.134 [info] {"source":"oban","duration":2224,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:30:43.137 [info] {"source":"oban","duration":2337,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:31:00.259 [info] {"source":"oban","duration":763,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 14:31:10.729 [info] GET /sources/11/media/58543/force_download 14:31:10.730 [debug] QUERY OK source="settings" db=0.7ms queue=0.1ms idle=1302.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:31:10.731 [debug] QUERY OK source="settings" db=0.5ms queue=0.1ms idle=882.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:31:10.732 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 14:31:10.732 [error] #PID<0.11263.0> running PinchflatWeb.Endpoint (connection #PID<0.11262.0>, stream id 1) terminated Server: pinchflat.uiau7e.uncld.dev:80 (http) Request: GET /sources/11/media/58543/force_download ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/11/media/58543/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.11262.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/11/media/58543/force_download", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 36646}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "from" => "gptbot(at)openai.com", "host" => "pinchflat.uiau7e.uncld.dev", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.3; +https://openai.com/gptbot)", "via" => "2.0 Caddy", "x-forwarded-for" => "74.7.227.183", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https", "x-openai-host-hash" => "454925582" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.uiau7e.uncld.dev", method: "GET", owner: #PID<0.11263.0>, params: %{}, path_info: ["sources", "11", "media", "58543", "force_download"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.uiau7e.uncld.dev", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {10, 210, 0, 2}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"accept-encoding", "gzip, br, deflate"}, {"from", "gptbot(at)openai.com"}, {"host", "pinchflat.uiau7e.uncld.dev"}, {"user-agent", "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.3; +https://openai.com/gptbot)"}, {"via", "2.0 Caddy"}, {"x-forwarded-for", "74.7.227.183"}, {"x-forwarded-host", "pinchflat.uiau7e.uncld.dev"}, {"x-forwarded-proto", "https"}, {"x-openai-host-hash", "454925582"} ], request_path: "/sources/11/media/58543/force_download", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GIcbATLuOKfu-DIAAPHC"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.11262.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/11/media/58543/force_download", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 36646}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "from" => "gptbot(at)openai.com", "host" => "pinchflat.uiau7e.uncld.dev", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.3; +https://openai.com/gptbot)", "via" => "2.0 Caddy", "x-forwarded-for" => "74.7.227.183", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https", "x-openai-host-hash" => "454925582" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/11/media/58543/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.11262.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/11/media/58543/force_download", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 36646}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "from" => "gptbot(at)openai.com", "host" => "pinchflat.uiau7e.uncld.dev", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.3; +https://openai.com/gptbot)", "via" => "2.0 Caddy", "x-forwarded-for" => "74.7.227.183", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https", "x-openai-host-hash" => "454925582" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.uiau7e.uncld.dev", method: "GET", owner: #PID<0.11263.0>, params: %{}, path_info: ["sources", "11", "media", "58543", "force_download"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.uiau7e.uncld.dev", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {10, 210, 0, 2}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"accept-en (truncated) 14:31:13.140 [info] {"source":"oban","duration":2784,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:31:43.145 [info] {"source":"oban","duration":3642,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:32:00.261 [info] {"source":"oban","duration":336,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 14:32:11.933 [info] GET /sources/27/media/58540/force_download 14:32:11.935 [debug] QUERY OK source="settings" db=0.6ms queue=0.1ms idle=1507.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:32:11.936 [debug] QUERY OK source="settings" db=0.6ms queue=0.1ms idle=1508.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:32:11.936 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 14:32:11.937 [error] #PID<0.11269.0> running PinchflatWeb.Endpoint (connection #PID<0.11268.0>, stream id 1) terminated Server: pinchflat.uiau7e.uncld.dev:80 (http) Request: GET /sources/27/media/58540/force_download ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/27/media/58540/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.11268.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/27/media/58540/force_download", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 37576}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "from" => "gptbot(at)openai.com", "host" => "pinchflat.uiau7e.uncld.dev", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.3; +https://openai.com/gptbot)", "via" => "2.0 Caddy", "x-forwarded-for" => "74.7.227.183", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https", "x-openai-host-hash" => "454925582" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.uiau7e.uncld.dev", method: "GET", owner: #PID<0.11269.0>, params: %{}, path_info: ["sources", "27", "media", "58540", "force_download"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.uiau7e.uncld.dev", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {10, 210, 0, 2}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"accept-encoding", "gzip, br, deflate"}, {"from", "gptbot(at)openai.com"}, {"host", "pinchflat.uiau7e.uncld.dev"}, {"user-agent", "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.3; +https://openai.com/gptbot)"}, {"via", "2.0 Caddy"}, {"x-forwarded-for", "74.7.227.183"}, {"x-forwarded-host", "pinchflat.uiau7e.uncld.dev"}, {"x-forwarded-proto", "https"}, {"x-openai-host-hash", "454925582"} ], request_path: "/sources/27/media/58540/force_download", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GIcbD3L36351SqEAAPIi"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.11268.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/27/media/58540/force_download", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 37576}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "from" => "gptbot(at)openai.com", "host" => "pinchflat.uiau7e.uncld.dev", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.3; +https://openai.com/gptbot)", "via" => "2.0 Caddy", "x-forwarded-for" => "74.7.227.183", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https", "x-openai-host-hash" => "454925582" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/27/media/58540/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.11268.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/27/media/58540/force_download", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 37576}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "from" => "gptbot(at)openai.com", "host" => "pinchflat.uiau7e.uncld.dev", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.3; +https://openai.com/gptbot)", "via" => "2.0 Caddy", "x-forwarded-for" => "74.7.227.183", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https", "x-openai-host-hash" => "454925582" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.uiau7e.uncld.dev", method: "GET", owner: #PID<0.11269.0>, params: %{}, path_info: ["sources", "27", "media", "58540", "force_download"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.uiau7e.uncld.dev", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {10, 210, 0, 2}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"accept-en (truncated) 14:32:13.147 [info] {"source":"oban","duration":1004,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:32:20.076 [info] {"args":{"id":19},"id":203108,"meta":{},"system_time":1767411140076479307,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 14:32:20.077 [debug] QUERY OK source="sources" db=0.3ms idle=650.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [19] 14:32:20.078 [debug] QUERY OK source="settings" db=0.4ms idle=650.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:32:20.078 [debug] QUERY OK source="media_profiles" db=0.2ms idle=651.3ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 14:32:20.078 [debug] QUERY OK source="settings" db=0.2ms idle=8.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:32:20.079 [debug] Fetching recent media IDs from YouTube API for playlist: UUaYhH3F6iB3KyW3afTHk5XA 14:32:20.079 [debug] QUERY OK source="settings" db=0.1ms idle=2.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:32:20.079 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 14:32:20.636 [debug] QUERY OK source="media_items" db=5.3ms idle=553.3ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND m0."media_id" IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [19, "mUlKcxGWvrQ", "ydfuNK4wSik", "x6cNQykYdEM", "SvyVS7zvquc", "l4O2F-1BWVI", "LYXADYUSTSg", "HpL40FdPGqk", "Wre5VWHxSug", "PdUu77SAH0I", "VCflrtok9hQ", "haEa6h8Ptf0", "c_-f7G9VSPw", "7rSLcNznix4", "OLXr-B-xwY8", "X05FPJq6_Oc", "kuL-trgOvq8", "WpBEifN8BYw", "YETks_YtraY", "bwKKd4N8Q2E", "PpNfOqbt0a8", "GyifuiQ6p48", "SkoFBCBASto", "-GNid2M6IC8", "muehDmLuJSw", "nBx5yssxPDk", "Q6vzDo6it9o", "AH9Z6_PlKhA", "dZfthyLyjDk", "j9UuSMaqX9Q", "jmoVFLUvyD0", "tKm_pnNEDsc", "boVAiizeh1M", "FNtBH6k7Jmo", "MDhN5WGOJ_o", "P-UQX5L_Ff0", "kys3lRzOOEY", "VDHSC2Dl8f0", "JU0uEdyPKlE", "0sSWAzq7rjc", "HOLXNrjWeuo"] 14:32:20.641 [debug] QUERY OK source="media_items" db=2.2ms idle=561.4ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [19] 14:32:20.646 [debug] QUERY OK source="tasks" db=0.8ms idle=566.4ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [203132, 19, ~U[2026-01-03 03:32:20Z], ~U[2026-01-03 03:32:20Z]] 14:32:20.647 [info] {"args":{"id":19},"id":203108,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":570366,"event":"job:stop","queue_time":317370,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 14:32:21.084 [info] {"args":{"id":23},"id":203109,"meta":{},"system_time":1767411141084490065,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 14:32:21.086 [debug] QUERY OK source="sources" db=0.7ms queue=0.2ms idle=438.3ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [23] 14:32:21.087 [debug] QUERY OK source="settings" db=0.6ms queue=0.1ms idle=438.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:32:21.088 [debug] QUERY OK source="media_profiles" db=0.5ms queue=0.1ms idle=431.7ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 14:32:21.089 [debug] QUERY OK source="settings" db=0.9ms idle=12.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:32:21.089 [debug] Fetching recent media IDs from YouTube API for playlist: UUSHvlfXUGYGWmDBg-afA5Bg 14:32:21.090 [debug] QUERY OK source="settings" db=0.3ms queue=0.1ms idle=5.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:32:21.090 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 14:32:21.445 [debug] QUERY OK source="media_items" db=2.4ms idle=357.1ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND m0."media_id" IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [23, "QASZbKPkS08", "pr7MMAFzHe8", "DG0BSdc6kKg", "o7DJZCU8q34", "G5A2QGwRmS4", "PER4GK9LCTA", "GzIS1WZFKtc", "24P4MFV-HrM", "6x6df3uagb4", "vALU9LhFKhE", "KF1grNBv5hU", "SLSPmp8-tXE", "53liPfHBgYQ", "zykmoM0qjbA", "boyfPk5qdBM", "H2VYuo7yb2o", "75_mYLpHDr4", "PSnlGB9aKVI", "vFBFSi2XqrQ", "X2z1ugOwR2A", "ePV6FKD1J9U", "ipxj_tl_6XY", "6l9-ctzSbCo", "xu3DTyCW3Yk", "wpAt0QaSk7U", "NXy9Sg0KIMY", "ml5AG_Q0y6w", "h_Uq6-e06y8", "37_rLteuwG4", "QCbf0kOJ8lA"] 14:32:21.449 [debug] QUERY OK source="media_items" db=1.2ms idle=360.7ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [23] 14:32:21.455 [debug] QUERY OK source="tasks" db=1.1ms idle=363.3ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [203133, 23, ~U[2026-01-03 03:32:21Z], ~U[2026-01-03 03:32:21Z]] 14:32:21.456 [info] {"args":{"id":23},"id":203109,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":370590,"event":"job:stop","queue_time":514244,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 14:32:22.090 [info] {"args":{"id":25},"id":203110,"meta":{},"system_time":1767411142090456652,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 14:32:22.092 [debug] QUERY OK source="sources" db=0.7ms queue=0.1ms idle=636.1ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [25] 14:32:22.093 [debug] QUERY OK source="settings" db=0.6ms queue=0.1ms idle=636.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:32:22.094 [debug] QUERY OK source="media_profiles" db=0.6ms idle=629.8ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 14:32:22.095 [debug] QUERY OK source="settings" db=0.6ms idle=11.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:32:22.095 [debug] Fetching recent media IDs from YouTube API for playlist: UUWstkeBSSIEgw6n5qnlXXuA 14:32:22.096 [debug] QUERY OK source="settings" db=0.3ms idle=5.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:32:22.096 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 14:32:22.429 [debug] QUERY OK source="media_items" db=1.5ms queue=0.1ms idle=335.5ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND m0."media_id" IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [25, "_sYSZI--9TA", "T7P86y4vYKs", "qWpf9ysgE04", "81v7r86tRRE", "a3LYS6jzPKA", "o5UKHwwdhmA", "6CCxzLKCHYA", "VONzFNo8uW4", "jJUysp-6qBs", "3KzmAquL3e4", "5cgK_MdFz7s", "bHpsXfutTFY", "kVhFNQj86Ng", "nyd40ZDhRw4"] 14:32:22.431 [debug] QUERY OK source="media_items" db=1.3ms idle=337.0ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [25] 14:32:22.436 [debug] QUERY OK source="tasks" db=0.9ms idle=339.0ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [203134, 25, ~U[2026-01-03 03:32:22Z], ~U[2026-01-03 03:32:22Z]] 14:32:22.437 [info] {"args":{"id":25},"id":203110,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":345799,"event":"job:stop","queue_time":512938,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 14:32:23.095 [info] {"args":{"id":17},"id":203111,"meta":{},"system_time":1767411143095581313,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 14:32:23.097 [debug] QUERY OK source="sources" db=1.2ms idle=659.8ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [17] 14:32:23.098 [debug] QUERY OK source="settings" db=0.8ms idle=660.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:32:23.099 [debug] QUERY OK source="media_profiles" db=0.6ms idle=654.4ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 14:32:23.100 [debug] QUERY OK source="settings" db=0.5ms queue=0.1ms idle=12.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:32:23.100 [debug] Fetching recent media IDs from YouTube API for playlist: UUEIwxahdLz7bap-VDs9h35A 14:32:23.101 [debug] QUERY OK source="settings" db=0.4ms queue=0.1ms idle=5.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:32:23.102 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 14:32:23.543 [debug] QUERY OK source="media_items" db=5.6ms idle=439.9ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND m0."media_id" IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [17, "kuMUquaeE6g", "-NzfTE8RI4w", "2eiYALLYBFE", "J_vXK9uvRf4", "tRDxBwverlI", "ymlNErMdI2k", "hM1l19H0tX8", "qg01MgiVT9k", "a3l6FdpltbQ", "NtZaP8VMv0c", "ayicYezINas", "zoTuSOEOvPw", "U7NHNT3M-tw", "B_PCZiNlmPw", "5glksNTKkZI", "iDsb-pxE3fA", "7PJi9KSDVbQ", "CfhsW1kaa2Q", "pleHURTV6fU", "T47s4L1Wje4", "LLlghvxVoH0", "K4542wtX8B4", "rf-efIZI_Dg", "OXvdwc6NDqM", "nGEHUbTtpPY", "0FybegjTkgw", "3TgdCWBV0pg", "Qjd4CREfYbo", "pqnyUemUDF4", "6-FQSEVc_cs", "BvoDuNZ9gLA", "AjJfefo41M8", "dJSGJ1-9XWw", "Mcg9GcilBfU", "MQSwyrjTV2M", "o-dZKBwbsis", "matUCqoiSGk", "0_VdGzEk5-M", "PAOpkv0fpik", "VdwSMytC7y4", "tw5tQPm-B00", "vkD3-msLIHg", "INq7pAmaUuk", "mfTVxFapdLw", "kY2YeM5fNDw", "lkWRiks6luc", "yiCM_i8r4RM", "XzBMFsZT5gM", "dKN6XatdVkY", ...] 14:32:23.552 [debug] QUERY OK source="media_items" db=5.7ms idle=448.0ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [17] 14:32:23.558 [debug] QUERY OK source="tasks" db=1.0ms idle=455.0ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [203135, 17, ~U[2026-01-03 03:32:23Z], ~U[2026-01-03 03:32:23Z]] 14:32:23.559 [info] {"args":{"id":17},"id":203111,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":462570,"event":"job:stop","queue_time":460329,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 14:32:43.150 [info] {"source":"oban","duration":1430,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:33:00.262 [info] {"source":"oban","duration":530,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 14:33:13.154 [info] {"source":"oban","duration":3761,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:33:14.732 [info] GET /media/434509a0-9ea2-40cb-9a3e-5cb04635bd13/stream 14:33:14.733 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.stream/2 Parameters: %{"uuid" => "434509a0-9ea2-40cb-9a3e-5cb04635bd13", "v" => "1760236136"} Pipelines: [:maybe_basic_auth] 14:33:14.734 [debug] QUERY OK source="media_items" db=1.0ms queue=0.1ms idle=1306.2ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."uuid" = ?) ["434509a0-9ea2-40cb-9a3e-5cb04635bd13"] 14:33:14.751 [debug] Invalid range request for media item: 434509a0-9ea2-40cb-9a3e-5cb04635bd13 - serving full file 14:33:14.751 [info] Sent 200 in 18ms 14:33:43.271 [info] {"source":"oban","duration":1391,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:33:50.721 [info] {"args":{"id":7},"id":203116,"meta":{},"system_time":1767411230721406132,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 14:33:50.722 [debug] QUERY OK source="sources" db=0.4ms idle=23.8ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [7] 14:33:50.723 [debug] QUERY OK source="settings" db=0.5ms idle=24.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:33:50.724 [debug] QUERY OK source="media_profiles" db=0.9ms idle=25.3ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 14:33:50.727 [debug] QUERY OK source="settings" db=2.6ms idle=10.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:33:50.727 [debug] Fetching recent media IDs from YouTube API for playlist: UUwnKziETDbHJtx78nIkfYug 14:33:50.728 [debug] QUERY OK source="settings" db=0.2ms idle=6.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:33:50.728 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 14:33:51.112 [debug] QUERY OK source="media_items" db=3.1ms idle=387.1ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND m0."media_id" IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [7, "mC5NdpSMDks", "ccV3u3D9ONE", "cVCDjEfPzII", "n0X2rqzKTgM", "dcuCvRNqmpY", "GG1qX8jHKGo", "k9wkleHFvo0", "CWoYVlMuUNQ", "xlfeieH4z38", "eZM2Ik-FHEU", "CtcTG8-qzbA", "6Mmj7mf1qlg", "InwVO9qBjqs", "1Hp-W2bpPrw", "VtE5sTpkn7k", "8dOJypt2F70", "Evm4t4prtWo", "taLzgvbrnv0", "rgCrnyf5JEI", "PHhc-48JT3U", "vFKjpNNjNGw", "VJQlOI70ubw", "E5cfNq0DO90", "DNBGSsZatbY", "pna1NyaHTls", "CUHao-vA98g", "cPN9BJe_RQw", "rCBt4XgCX-0", "f4g6KKGMmEI", "P_I5Jsc3xRw", "fPaU2l7RktM", "0PVwt01b6fs", "0qMDM4Y4Hwo", "Ld285PDsHvs", "p1mQC71wplA", "9k5JhKK6WlA", "WPxrifmtlQI", "nVNBmK7a1y8", "QDnMYztaxfI", "gxsaWhXG1Gg", "RMtkKiyrXic", "JKlJ6OW67Bk", "Sjmb8O-fRWI", "qZhD4G7ENSY", "OTWDzMjgsEY", "Y_eCu_pW6-4", "DplgNsjOPRg", "l6hHI3AVoYM", "joAhvj7dfsc", ...] 14:33:51.119 [debug] QUERY OK source="media_items" db=4.0ms idle=392.0ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [7] 14:33:51.123 [debug] QUERY OK source="tasks" db=0.3ms queue=0.1ms idle=395.2ms INSERT INTO "tasks" ("job_id","media_item_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [203136, 8350, ~U[2026-01-03 03:33:51Z], ~U[2026-01-03 03:33:51Z]] 14:33:51.127 [debug] QUERY OK source="tasks" db=0.4ms idle=4.5ms INSERT INTO "tasks" ("job_id","media_item_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [203137, 8380, ~U[2026-01-03 03:33:51Z], ~U[2026-01-03 03:33:51Z]] 14:33:51.132 [info] {"args":{"id":8350},"id":203136,"meta":{},"system_time":1767411231132100145,"max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 14:33:51.132 [info] {"args":{"id":8380},"id":203137,"meta":{},"system_time":1767411231132168399,"max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 14:33:51.133 [debug] QUERY OK source="media_items" db=0.3ms queue=0.1ms idle=4.8ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [8350] 14:33:51.133 [debug] QUERY OK source="tasks" db=0.8ms queue=0.3ms idle=5.4ms INSERT INTO "tasks" ("job_id","media_item_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [203138, 8401, ~U[2026-01-03 03:33:51Z], ~U[2026-01-03 03:33:51Z]] 14:33:51.133 [debug] QUERY OK source="media_items" db=0.7ms idle=2.3ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [8380] 14:33:51.133 [info] User scripts lifecyle file either not present or is empty. Skipping. 14:33:51.134 [info] User scripts lifecyle file either not present or is empty. Skipping. 14:33:51.136 [debug] QUERY OK source="sources" db=2.2ms idle=1.1ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [7] 14:33:51.136 [debug] QUERY OK source="sources" db=2.6ms idle=1.8ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [7] 14:33:51.138 [debug] QUERY OK source="media_profiles" db=1.5ms idle=3.1ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 14:33:51.138 [debug] QUERY OK source="media_profiles" db=2.0ms idle=3.2ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 14:33:51.140 [debug] QUERY OK source="media_items" db=1.5ms idle=2.0ms SELECT 1 FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) LIMIT 1 [8350] 14:33:51.141 [debug] QUERY OK source="media_items" db=1.2ms idle=3.4ms SELECT 1 FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) LIMIT 1 [8380] 14:33:51.142 [debug] QUERY OK source="media_metadata" db=0.4ms idle=1.5ms SELECT m0."id", m0."metadata_filepath", m0."thumbnail_filepath", m0."media_item_id", m0."inserted_at", m0."updated_at", m0."media_item_id" FROM "media_metadata" AS m0 WHERE (m0."media_item_id" = ?) [8350] 14:33:51.142 [debug] QUERY OK source="tasks" db=1.0ms idle=2.4ms INSERT INTO "tasks" ("job_id","media_item_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [203139, 8418, ~U[2026-01-03 03:33:51Z], ~U[2026-01-03 03:33:51Z]] 14:33:51.143 [debug] QUERY OK source="media_metadata" db=0.7ms idle=1.3ms SELECT m0."id", m0."metadata_filepath", m0."thumbnail_filepath", m0."media_item_id", m0."inserted_at", m0."updated_at", m0."media_item_id" FROM "media_metadata" AS m0 WHERE (m0."media_item_id" = ?) [8380] 14:33:51.143 [debug] QUERY OK source="media_profiles" db=1.0ms idle=2.0ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 14:33:51.143 [debug] QUERY OK source="media_profiles" db=0.2ms idle=1.1ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 14:33:51.144 [debug] QUERY OK source="settings" db=0.3ms queue=0.1ms idle=1.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:33:51.144 [debug] QUERY OK source="settings" db=0.4ms idle=0.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:33:51.145 [debug] QUERY OK source="settings" db=0.3ms idle=0.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:33:51.145 [debug] QUERY OK source="settings" db=0.5ms idle=1.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:33:51.145 [debug] Running yt-dlp command for action: get_downloadable_status 14:33:51.146 [debug] QUERY OK source="tasks" db=0.8ms idle=0.7ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [203140, 7, ~U[2026-01-03 03:33:51Z], ~U[2026-01-03 03:33:51Z]] 14:33:51.146 [info] {"args":{"id":7},"id":203116,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":424651,"event":"job:stop","queue_time":776009,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 14:33:51.147 [debug] Running yt-dlp command for action: get_downloadable_status 14:33:51.147 [debug] QUERY OK source="settings" db=0.4ms idle=2.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:33:51.148 [debug] QUERY OK source="settings" db=0.4ms idle=2.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:33:51.148 [debug] QUERY OK source="settings" db=0.3ms idle=3.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:33:51.149 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=bhkmFO8DikY --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/c5/71/c5716773fcf33426cfbf77ababa53146b7f3b7038b42041b321a14eb137b9a47.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:33:51.149 [debug] QUERY OK source="settings" db=0.5ms idle=3.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:33:51.150 [debug] QUERY OK source="settings" db=0.3ms idle=3.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:33:51.150 [debug] QUERY OK source="settings" db=0.2ms idle=2.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:33:51.150 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=aCES82xfgdw --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/ea/80/ea8021c4862253b9bca992368010737949358aeaec5690def98b70fdc647ecda.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:33:56.706 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=aCES82xfgdw --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/ea/80/ea8021c4862253b9bca992368010737949358aeaec5690def98b70fdc647ecda.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 1 with: ERROR: [youtube] aCES82xfgdw: Sign in to confirm your age. This video may be inappropriate for some users. Use --cookies-from-browser or --cookies for the authentication. See https://github.com/yt-dlp/yt-dlp/wiki/FAQ#how-do-i-pass-cookies-to-yt-dlp for how to manually pass cookies. Also see https://github.com/yt-dlp/yt-dlp/wiki/Extractors#exporting-youtube-cookies for tips on effectively exporting YouTube cookies 14:33:56.707 [debug] QUERY OK source="settings" db=0.6ms queue=0.1ms idle=977.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:33:56.708 [debug] QUERY OK source="settings" db=0.3ms idle=10.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:33:56.709 [debug] Running yt-dlp command for action: get_downloadable_status 14:33:56.711 [debug] QUERY OK source="settings" db=0.6ms idle=13.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:33:56.712 [debug] QUERY OK source="settings" db=0.3ms queue=0.1ms idle=14.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:33:56.713 [debug] QUERY OK source="settings" db=0.3ms idle=14.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:33:56.713 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=aCES82xfgdw --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/3c/d9/3cd9ce7939f2a371dee2c29865e484dc9e4733b41a10a5a5584826686174193c.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:33:56.737 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=bhkmFO8DikY --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/c5/71/c5716773fcf33426cfbf77ababa53146b7f3b7038b42041b321a14eb137b9a47.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 1 with: ERROR: [youtube] bhkmFO8DikY: Sign in to confirm your age. This video may be inappropriate for some users. Use --cookies-from-browser or --cookies for the authentication. See https://github.com/yt-dlp/yt-dlp/wiki/FAQ#how-do-i-pass-cookies-to-yt-dlp for how to manually pass cookies. Also see https://github.com/yt-dlp/yt-dlp/wiki/Extractors#exporting-youtube-cookies for tips on effectively exporting YouTube cookies 14:33:56.738 [debug] QUERY OK source="settings" db=0.5ms queue=0.1ms idle=29.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:33:56.739 [debug] QUERY OK source="settings" db=0.2ms idle=27.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:33:56.740 [debug] Running yt-dlp command for action: get_downloadable_status 14:33:56.741 [debug] QUERY OK source="settings" db=0.2ms idle=28.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:33:56.741 [debug] QUERY OK source="settings" db=0.2ms idle=27.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:33:56.742 [debug] QUERY OK source="settings" db=0.2ms idle=9.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:33:56.742 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=bhkmFO8DikY --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/1a/bb/1abb4496d0f4678b5c86e4f3e1b6a2227907a27aab2631f4c29d14f478a7fb24.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:33:58.747 [info] {"args":{"id":24},"id":203117,"meta":{},"system_time":1767411238747420088,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 14:33:58.749 [debug] QUERY OK source="sources" db=1.2ms idle=49.8ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [24] 14:33:58.750 [debug] QUERY OK source="settings" db=0.6ms queue=0.1ms idle=51.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:33:58.751 [debug] QUERY OK source="media_profiles" db=0.7ms queue=0.1ms idle=52.7ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 14:33:58.752 [debug] QUERY OK source="settings" db=0.7ms queue=0.1ms idle=12.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:33:58.752 [debug] Fetching recent media IDs from YouTube API for playlist: UUNTjSZfAK117b2kFGNCJfdA 14:33:58.753 [debug] QUERY OK source="settings" db=0.3ms queue=0.1ms idle=5.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:33:58.754 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 14:33:59.151 [debug] QUERY OK source="media_items" db=3.0ms idle=399.1ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND m0."media_id" IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [24, "2J48c2sukbo", "zq9gpqgWFv8", "EWdphas_OP4", "-U2sQ3e3R-0", "XdytKwHuG_8", "t-hori2Io14", "Xbemvi42Ngs", "91m4MQw_sZI", "GfUIbPqAMQs", "4VpVt3zdvL8", "q6Kd5C7O-F8", "EV6DSqTOXM0", "mMvfBUNNKIY", "C215grXAMCk", "_x6TE7hbE1k", "vycMxLco0a0", "lJWhisaNv8E", "4Blxc8mVzQs", "ztqcWc5aaks", "0Dvn039qD8I", "Vx69evZOEAE", "4dzZ44-xVds", "Rews5WNxiNk", "f-BFFWzh9uE", "RfJSMWHO0tY", "gMeUOURvDP8", "LEiL1np9sSM", "F-QeDtQ8Gy4", "9FSIF281OAo", "Shav52BfzWk", "dsCfQ3y5tHQ", "0rpt5sMb7cw", "Fe7Y152ak3Y", "HEuablkqrCg", "BRUTYHBJ_Z4", "gpaV4bgEG-g", "ppjFdEbIS4g", "lEhEMRA17bg", "tpIXmmV4ib4", "LBYQ_NLVKCw", "JsdM3k3QiPc", "TNmSVjGyZx0", "OMVYZziNjhc", "uyfyFRvng3c", "YFBg5NNEW4g", "IkZe4pXDv0k", "ZT0in30U-ug", "kqDqSLOuxmM", "ZgLsNSWN46o", ...] 14:33:59.157 [debug] QUERY OK source="media_items" db=1.0ms idle=406.4ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [24] 14:33:59.161 [debug] QUERY OK source="tasks" db=0.6ms idle=407.0ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [203141, 24, ~U[2026-01-03 03:33:59Z], ~U[2026-01-03 03:33:59Z]] 14:33:59.162 [info] {"args":{"id":24},"id":203117,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":414080,"event":"job:stop","queue_time":820596,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 14:34:00.264 [info] {"source":"oban","duration":380,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 14:34:02.176 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=bhkmFO8DikY --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/1a/bb/1abb4496d0f4678b5c86e4f3e1b6a2227907a27aab2631f4c29d14f478a7fb24.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 1 with: ERROR: [youtube] bhkmFO8DikY: Sign in to confirm your age. This video may be inappropriate for some users. Use --cookies-from-browser or --cookies for the authentication. See https://github.com/yt-dlp/yt-dlp/wiki/FAQ#how-do-i-pass-cookies-to-yt-dlp for how to manually pass cookies. Also see https://github.com/yt-dlp/yt-dlp/wiki/Extractors#exporting-youtube-cookies for tips on effectively exporting YouTube cookies 14:34:02.176 [error] yt-dlp download error for media item #8380: "ERROR: [youtube] bhkmFO8DikY: Sign in to confirm your age. This video may be inappropriate for some users. Use --cookies-from-browser or --cookies for the authentication. See https://github.com/yt-dlp/yt-dlp/wiki/FAQ#how-do-i-pass-cookies-to-yt-dlp for how to manually pass cookies. Also see https://github.com/yt-dlp/yt-dlp/wiki/Extractors#exporting-youtube-cookies for tips on effectively exporting YouTube cookies\n" 14:34:02.177 [error] yt-dlp download will not be retried: "ERROR: [youtube] bhkmFO8DikY: Sign in to confirm your age. This video may be inappropriate for some users. Use --cookies-from-browser or --cookies for the authentication. See https://github.com/yt-dlp/yt-dlp/wiki/FAQ#how-do-i-pass-cookies-to-yt-dlp for how to manually pass cookies. Also see https://github.com/yt-dlp/yt-dlp/wiki/Extractors#exporting-youtube-cookies for tips on effectively exporting YouTube cookies\n" 14:34:02.178 [info] {"args":{"id":8380},"id":203137,"meta":{},"state":"success","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":11045313,"event":"job:stop","queue_time":128703,"attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 14:34:02.186 [info] {"args":{"id":8401},"id":203138,"meta":{},"system_time":1767411242186495537,"max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 14:34:02.187 [debug] QUERY OK source="media_items" db=0.4ms queue=0.1ms idle=1441.7ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [8401] 14:34:02.187 [info] User scripts lifecyle file either not present or is empty. Skipping. 14:34:02.189 [debug] QUERY OK source="sources" db=1.1ms queue=0.1ms idle=490.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [7] 14:34:02.190 [debug] QUERY OK source="media_profiles" db=0.6ms idle=440.7ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 14:34:02.192 [debug] QUERY OK source="media_items" db=1.1ms idle=12.1ms SELECT 1 FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) LIMIT 1 [8401] 14:34:02.193 [debug] QUERY OK source="media_metadata" db=0.1ms idle=6.8ms SELECT m0."id", m0."metadata_filepath", m0."thumbnail_filepath", m0."media_item_id", m0."inserted_at", m0."updated_at", m0."media_item_id" FROM "media_metadata" AS m0 WHERE (m0."media_item_id" = ?) [8401] 14:34:02.193 [debug] QUERY OK source="media_profiles" db=0.2ms idle=6.1ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 14:34:02.194 [debug] QUERY OK source="settings" db=0.2ms idle=5.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:34:02.194 [debug] QUERY OK source="settings" db=0.1ms idle=4.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:34:02.195 [debug] Running yt-dlp command for action: get_downloadable_status 14:34:02.197 [debug] QUERY OK source="settings" db=0.5ms idle=5.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:34:02.198 [debug] QUERY OK source="settings" db=0.3ms idle=4.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:34:02.199 [debug] QUERY OK source="settings" db=0.4ms queue=0.1ms idle=4.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:34:02.199 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=ZWSj0M132e8 --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/89/f5/89f555da878ef321474519ff65d2ac4dff6b280e641bef4b8158bb63de9d87bf.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:34:02.386 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=aCES82xfgdw --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/3c/d9/3cd9ce7939f2a371dee2c29865e484dc9e4733b41a10a5a5584826686174193c.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 1 with: ERROR: [youtube] aCES82xfgdw: Sign in to confirm your age. This video may be inappropriate for some users. Use --cookies-from-browser or --cookies for the authentication. See https://github.com/yt-dlp/yt-dlp/wiki/FAQ#how-do-i-pass-cookies-to-yt-dlp for how to manually pass cookies. Also see https://github.com/yt-dlp/yt-dlp/wiki/Extractors#exporting-youtube-cookies for tips on effectively exporting YouTube cookies 14:34:02.386 [error] yt-dlp download error for media item #8350: "ERROR: [youtube] aCES82xfgdw: Sign in to confirm your age. This video may be inappropriate for some users. Use --cookies-from-browser or --cookies for the authentication. See https://github.com/yt-dlp/yt-dlp/wiki/FAQ#how-do-i-pass-cookies-to-yt-dlp for how to manually pass cookies. Also see https://github.com/yt-dlp/yt-dlp/wiki/Extractors#exporting-youtube-cookies for tips on effectively exporting YouTube cookies\n" 14:34:02.386 [error] yt-dlp download will not be retried: "ERROR: [youtube] aCES82xfgdw: Sign in to confirm your age. This video may be inappropriate for some users. Use --cookies-from-browser or --cookies for the authentication. See https://github.com/yt-dlp/yt-dlp/wiki/FAQ#how-do-i-pass-cookies-to-yt-dlp for how to manually pass cookies. Also see https://github.com/yt-dlp/yt-dlp/wiki/Extractors#exporting-youtube-cookies for tips on effectively exporting YouTube cookies\n" 14:34:02.387 [info] {"args":{"id":8350},"id":203136,"meta":{},"state":"success","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":11254312,"event":"job:stop","queue_time":128703,"attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 14:34:02.396 [info] {"args":{"id":8418},"id":203139,"meta":{},"system_time":1767411242396529812,"max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 14:34:02.397 [debug] QUERY OK source="media_items" db=0.4ms idle=199.1ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [8418] 14:34:02.398 [info] User scripts lifecyle file either not present or is empty. Skipping. 14:34:02.399 [debug] QUERY OK source="sources" db=1.1ms queue=0.1ms idle=200.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [7] 14:34:02.401 [debug] QUERY OK source="media_profiles" db=0.9ms idle=201.0ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 14:34:02.403 [debug] QUERY OK source="media_items" db=0.9ms idle=15.0ms SELECT 1 FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) LIMIT 1 [8418] 14:34:02.405 [debug] QUERY OK source="media_metadata" db=0.3ms idle=8.8ms SELECT m0."id", m0."metadata_filepath", m0."thumbnail_filepath", m0."media_item_id", m0."inserted_at", m0."updated_at", m0."media_item_id" FROM "media_metadata" AS m0 WHERE (m0."media_item_id" = ?) [8418] 14:34:02.406 [debug] QUERY OK source="media_profiles" db=0.6ms queue=0.1ms idle=8.6ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 14:34:02.408 [debug] QUERY OK source="settings" db=0.4ms queue=0.1ms idle=8.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:34:02.409 [debug] QUERY OK source="settings" db=0.4ms idle=7.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:34:02.410 [debug] Running yt-dlp command for action: get_downloadable_status 14:34:02.412 [debug] QUERY OK source="settings" db=0.4ms idle=8.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:34:02.413 [debug] QUERY OK source="settings" db=0.3ms queue=0.1ms idle=7.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:34:02.413 [debug] QUERY OK source="settings" db=0.3ms idle=6.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:34:02.414 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=v6jHhzj08yQ --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/c7/88/c788f38232a6d53cc96bf637e2753184bcaa044da95d960e62cc180e726223cf.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:34:07.809 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=v6jHhzj08yQ --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/c7/88/c788f38232a6d53cc96bf637e2753184bcaa044da95d960e62cc180e726223cf.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 1 with: ERROR: [youtube] v6jHhzj08yQ: Sign in to confirm your age. This video may be inappropriate for some users. Use --cookies-from-browser or --cookies for the authentication. See https://github.com/yt-dlp/yt-dlp/wiki/FAQ#how-do-i-pass-cookies-to-yt-dlp for how to manually pass cookies. Also see https://github.com/yt-dlp/yt-dlp/wiki/Extractors#exporting-youtube-cookies for tips on effectively exporting YouTube cookies 14:34:07.810 [debug] QUERY OK source="settings" db=0.5ms idle=112.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:34:07.811 [debug] QUERY OK source="settings" db=0.4ms idle=112.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:34:07.812 [debug] Running yt-dlp command for action: get_downloadable_status 14:34:07.814 [debug] QUERY OK source="settings" db=0.4ms idle=116.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:34:07.815 [debug] QUERY OK source="settings" db=0.3ms idle=116.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:34:07.815 [debug] QUERY OK source="settings" db=0.4ms idle=46.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:34:07.816 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=v6jHhzj08yQ --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/6c/3e/6c3ef5deaa7e71a33c045c261e772f7c3210dc42b3dab59f059348811f9af26b.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:34:07.962 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=ZWSj0M132e8 --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/89/f5/89f555da878ef321474519ff65d2ac4dff6b280e641bef4b8158bb63de9d87bf.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 1 with: ERROR: [youtube] ZWSj0M132e8: Sign in to confirm your age. This video may be inappropriate for some users. Use --cookies-from-browser or --cookies for the authentication. See https://github.com/yt-dlp/yt-dlp/wiki/FAQ#how-do-i-pass-cookies-to-yt-dlp for how to manually pass cookies. Also see https://github.com/yt-dlp/yt-dlp/wiki/Extractors#exporting-youtube-cookies for tips on effectively exporting YouTube cookies 14:34:07.963 [debug] QUERY OK source="settings" db=0.3ms idle=152.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:34:07.964 [debug] QUERY OK source="settings" db=0.5ms idle=152.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:34:07.965 [debug] Running yt-dlp command for action: get_downloadable_status 14:34:07.968 [debug] QUERY OK source="settings" db=0.4ms idle=153.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:34:07.968 [debug] QUERY OK source="settings" db=0.3ms idle=153.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:34:07.969 [debug] QUERY OK source="settings" db=0.3ms idle=153.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:34:07.970 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=ZWSj0M132e8 --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/81/f5/81f58fad4e1bc16c5a9e6bd3730c8e3573a3cb2e1d882fe87e6565531d536779.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:34:13.276 [info] {"source":"oban","duration":3635,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:34:13.287 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=v6jHhzj08yQ --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/6c/3e/6c3ef5deaa7e71a33c045c261e772f7c3210dc42b3dab59f059348811f9af26b.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 1 with: ERROR: [youtube] v6jHhzj08yQ: Sign in to confirm your age. This video may be inappropriate for some users. Use --cookies-from-browser or --cookies for the authentication. See https://github.com/yt-dlp/yt-dlp/wiki/FAQ#how-do-i-pass-cookies-to-yt-dlp for how to manually pass cookies. Also see https://github.com/yt-dlp/yt-dlp/wiki/Extractors#exporting-youtube-cookies for tips on effectively exporting YouTube cookies 14:34:13.288 [error] yt-dlp download error for media item #8418: "ERROR: [youtube] v6jHhzj08yQ: Sign in to confirm your age. This video may be inappropriate for some users. Use --cookies-from-browser or --cookies for the authentication. See https://github.com/yt-dlp/yt-dlp/wiki/FAQ#how-do-i-pass-cookies-to-yt-dlp for how to manually pass cookies. Also see https://github.com/yt-dlp/yt-dlp/wiki/Extractors#exporting-youtube-cookies for tips on effectively exporting YouTube cookies\n" 14:34:13.288 [error] yt-dlp download will not be retried: "ERROR: [youtube] v6jHhzj08yQ: Sign in to confirm your age. This video may be inappropriate for some users. Use --cookies-from-browser or --cookies for the authentication. See https://github.com/yt-dlp/yt-dlp/wiki/FAQ#how-do-i-pass-cookies-to-yt-dlp for how to manually pass cookies. Also see https://github.com/yt-dlp/yt-dlp/wiki/Extractors#exporting-youtube-cookies for tips on effectively exporting YouTube cookies\n" 14:34:13.289 [info] {"args":{"id":8418},"id":203139,"meta":{},"state":"success","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":10892143,"event":"job:stop","queue_time":11393759,"attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 14:34:13.575 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=ZWSj0M132e8 --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/81/f5/81f58fad4e1bc16c5a9e6bd3730c8e3573a3cb2e1d882fe87e6565531d536779.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 1 with: ERROR: [youtube] ZWSj0M132e8: Sign in to confirm your age. This video may be inappropriate for some users. Use --cookies-from-browser or --cookies for the authentication. See https://github.com/yt-dlp/yt-dlp/wiki/FAQ#how-do-i-pass-cookies-to-yt-dlp for how to manually pass cookies. Also see https://github.com/yt-dlp/yt-dlp/wiki/Extractors#exporting-youtube-cookies for tips on effectively exporting YouTube cookies 14:34:13.575 [error] yt-dlp download error for media item #8401: "ERROR: [youtube] ZWSj0M132e8: Sign in to confirm your age. This video may be inappropriate for some users. Use --cookies-from-browser or --cookies for the authentication. See https://github.com/yt-dlp/yt-dlp/wiki/FAQ#how-do-i-pass-cookies-to-yt-dlp for how to manually pass cookies. Also see https://github.com/yt-dlp/yt-dlp/wiki/Extractors#exporting-youtube-cookies for tips on effectively exporting YouTube cookies\n" 14:34:13.575 [error] yt-dlp download will not be retried: "ERROR: [youtube] ZWSj0M132e8: Sign in to confirm your age. This video may be inappropriate for some users. Use --cookies-from-browser or --cookies for the authentication. See https://github.com/yt-dlp/yt-dlp/wiki/FAQ#how-do-i-pass-cookies-to-yt-dlp for how to manually pass cookies. Also see https://github.com/yt-dlp/yt-dlp/wiki/Extractors#exporting-youtube-cookies for tips on effectively exporting YouTube cookies\n" 14:34:13.576 [info] {"args":{"id":8401},"id":203138,"meta":{},"state":"success","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":11389236,"event":"job:stop","queue_time":11184765,"attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 14:34:15.778 [info] GET /sources/17/media/39298/force_download 14:34:15.779 [debug] QUERY OK source="settings" db=0.4ms queue=0.1ms idle=1080.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:34:15.780 [debug] QUERY OK source="settings" db=0.3ms queue=0.2ms idle=1081.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:34:15.781 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 14:34:15.782 [error] #PID<0.11309.0> running PinchflatWeb.Endpoint (connection #PID<0.11308.0>, stream id 1) terminated Server: pinchflat.uiau7e.uncld.dev:80 (http) Request: GET /sources/17/media/39298/force_download ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/17/media/39298/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.11308.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/17/media/39298/force_download", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 53342}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "from" => "gptbot(at)openai.com", "host" => "pinchflat.uiau7e.uncld.dev", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.3; +https://openai.com/gptbot)", "via" => "2.0 Caddy", "x-forwarded-for" => "74.7.227.183", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https", "x-openai-host-hash" => "454925582" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.uiau7e.uncld.dev", method: "GET", owner: #PID<0.11309.0>, params: %{}, path_info: ["sources", "17", "media", "39298", "force_download"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.uiau7e.uncld.dev", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {10, 210, 0, 2}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"accept-encoding", "gzip, br, deflate"}, {"from", "gptbot(at)openai.com"}, {"host", "pinchflat.uiau7e.uncld.dev"}, {"user-agent", "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.3; +https://openai.com/gptbot)"}, {"via", "2.0 Caddy"}, {"x-forwarded-for", "74.7.227.183"}, {"x-forwarded-host", "pinchflat.uiau7e.uncld.dev"}, {"x-forwarded-proto", "https"}, {"x-openai-host-hash", "454925582"} ], request_path: "/sources/17/media/39298/force_download", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GIcbLEiyOG22AcsAAiLh"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.11308.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/17/media/39298/force_download", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 53342}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "from" => "gptbot(at)openai.com", "host" => "pinchflat.uiau7e.uncld.dev", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.3; +https://openai.com/gptbot)", "via" => "2.0 Caddy", "x-forwarded-for" => "74.7.227.183", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https", "x-openai-host-hash" => "454925582" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/17/media/39298/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.11308.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/17/media/39298/force_download", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 53342}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "from" => "gptbot(at)openai.com", "host" => "pinchflat.uiau7e.uncld.dev", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.3; +https://openai.com/gptbot)", "via" => "2.0 Caddy", "x-forwarded-for" => "74.7.227.183", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https", "x-openai-host-hash" => "454925582" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.uiau7e.uncld.dev", method: "GET", owner: #PID<0.11309.0>, params: %{}, path_info: ["sources", "17", "media", "39298", "force_download"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.uiau7e.uncld.dev", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {10, 210, 0, 2}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"accept-en (truncated) 14:34:43.279 [info] {"source":"oban","duration":1767,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:34:48.889 [info] {"args":{"id":3},"id":203118,"meta":{},"system_time":1767411288889200132,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 14:34:48.890 [debug] QUERY OK source="sources" db=0.8ms idle=191.6ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [3] 14:34:48.891 [debug] QUERY OK source="settings" db=0.5ms idle=192.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:34:48.892 [debug] QUERY OK source="media_profiles" db=0.7ms idle=193.5ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 14:34:48.892 [debug] QUERY OK source="settings" db=0.4ms idle=10.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:34:48.893 [debug] Fetching recent media IDs from YouTube API for playlist: UUISrVZmDM4x-Rq9mmNUw7Zw 14:34:48.893 [debug] QUERY OK source="settings" db=0.3ms idle=4.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:34:48.893 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 14:34:49.299 [debug] QUERY OK source="media_items" db=6.0ms idle=402.7ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND m0."media_id" IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [3, "MQ2cHq3-J7A", "CtF5dLHITYA", "SGJkxRdkRGg", "OUCt85aJaAA", "9gARPYZOka4", "-uH-Gi5tjEw", "qwUBBQKYX94", "s8VLDSQJ8nA", "EvPfr0lKkh4", "msXzAxF49gA", "hQCWaSvjkU0", "RcmjVsy3a-g", "xtuNc9vYJG4", "fj2tcg8OzsM", "2FZ4IfPACDM", "2Q9DzW20YJ8", "IVsWFGOE_mw", "vPxpMcv2Z4Y", "Zverj_ldlhY", "pQK8xasPd9Q", "_Yo7nh8u9pk", "4HzltsOvc0A", "a8UBLMm71JY", "3vqbr7-6Twk", "Df0iVjAKJZw", "n-X-AJpHUyI", "4CV7jI0e0Hw", "nqPoocCKci8", "5IIOdWnJGxg", "jkPL8BaM4ko", "CzeQtnRmUZ0", "9u-0d2IVZ3I", "igtvNmqsKM0", "47XDpW4nOzk", "8xvd7xSLQOo", "PnQPZMN0kIY", "feDph2WgRfI", "Z5FZ2XfX4Uc", "e0DxPopyrqM", "YvaK-Tjp2ck", "6_CctUPWX4I", "_DzHKw8yK58", "VnAkeiehyCg", "EFW1iCguDV8", "CEj7B1VzUwU", "3cy5fWUssjQ", "ZnjoTYmqLhs", "5IxtizzvaWw", "ZnBsMRl-EL0", ...] 14:34:49.309 [debug] QUERY OK source="media_items" db=8.1ms idle=410.0ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [3] 14:34:49.313 [debug] QUERY OK source="tasks" db=0.7ms idle=419.3ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [203142, 3, ~U[2026-01-03 03:34:49Z], ~U[2026-01-03 03:34:49Z]] 14:34:49.315 [info] {"args":{"id":3},"id":203118,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":424785,"event":"job:stop","queue_time":741625,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 14:34:54.909 [info] {"args":{"id":1},"id":203119,"meta":{},"system_time":1767411294909541470,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 14:34:54.910 [debug] QUERY OK source="sources" db=0.6ms idle=211.9ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 14:34:54.911 [debug] QUERY OK source="settings" db=0.5ms idle=212.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:34:54.912 [debug] QUERY OK source="media_profiles" db=0.6ms idle=213.6ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 14:34:54.912 [debug] QUERY OK source="settings" db=0.4ms idle=10.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:34:54.913 [debug] Fetching recent media IDs from YouTube API for playlist: UU54SLBnD5k5U3Q6N__UjbAw 14:34:54.913 [debug] QUERY OK source="settings" db=0.3ms idle=3.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:34:54.913 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 14:34:55.258 [debug] QUERY OK source="media_items" db=4.2ms idle=343.3ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND m0."media_id" IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [1, "UYCKIroDVBY", "ynOiaE9f6NY", "At_WjGosTNM", "_s7ZzdPoVZE", "ulhKFEKXIEI", "YpQ2jupcrHk", "PetMnG6cCDw", "VdxlXCnA1DM", "uj2s7HZQigU", "rZ7Y_gPAHig", "LTmK8Ab6IFE", "sZKNVGI8xt0", "_PUZIf6VQto", "J2-1ZErtS7A", "OEyptSEM5Tw", "HLeY2_hJvRk", "DkZ5uXcDxjc", "zPWe_aBuNfM", "PZN18led4ok", "66F09ebI9gw", "Pfok4B_xyaI", "e5HEGCCadBU", "hYFsHfPquPg", "nKsnfEB29ek", "OpDh_O473Ms", "ZTtZ12XtQpg", "TphXloX3PEI", "4Qhp4VPP2Wo", "J5l7jvbp3u8", "uL_YQMkkbUg", "SAZ17l0EwxI", "fTa_T2pVwuk", "6HpTVfX0SvI", "XlIWsRyXL8U", "nM1GQNJU6LQ", "WVN1LNy1zgo", "0Fxf6_q7qHc", "dL0KPsy-Dww", "G43wJ7YyWzM", "yVy89TnL9Zg", "BR1VRJDu-gc", "-2HeoqiMC6s", "7WXyx51z5G8", "jCk-9S8PQyc", "vGEIHv1XelY", "rOI7HYGGHpo", "gNeGHhU6UaI", "gUlkwSHOT7Q", "tpf7TxliCxA", ...] 14:34:55.265 [debug] QUERY OK source="media_items" db=5.2ms idle=348.9ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [1] 14:34:55.269 [debug] QUERY OK source="tasks" db=0.8ms idle=355.0ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [203143, 1, ~U[2026-01-03 03:34:55Z], ~U[2026-01-03 03:34:55Z]] 14:34:55.270 [info] {"args":{"id":1},"id":203119,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":360091,"event":"job:stop","queue_time":739513,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 14:35:00.265 [info] {"source":"oban","duration":589,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 14:35:09.960 [info] {"args":{"id":22},"id":203120,"meta":{},"system_time":1767411309960294721,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 14:35:09.962 [debug] QUERY OK source="sources" db=0.8ms queue=0.2ms idle=1262.8ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [22] 14:35:09.963 [debug] QUERY OK source="settings" db=0.7ms queue=0.2ms idle=1016.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:35:09.964 [debug] QUERY OK source="media_profiles" db=0.7ms idle=265.7ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 14:35:09.965 [debug] QUERY OK source="settings" db=0.3ms queue=0.1ms idle=13.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:35:09.965 [debug] Fetching recent media IDs from YouTube API for playlist: UUP1RHyOhO98Yn2rMbDBirxA 14:35:09.966 [debug] QUERY OK source="settings" db=0.3ms queue=0.1ms idle=6.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:35:09.966 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 14:35:10.276 [debug] QUERY OK source="media_items" db=1.8ms queue=0.1ms idle=312.1ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND m0."media_id" IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [22, "N5RzDzO54gQ", "5glegyagphQ", "VtiV_RfFqNM", "qNYyH7bMcbI", "MPdiQsg_zQ8", "4-VOc2Aich8", "gMrBK9rp6As", "p0lqYk8_uMI", "aKpQHxUiwxc", "KsuhL0zVo3I", "pCJcoGDsbxc", "_5AR-GKeqlk", "VcJG7rIOjb0", "vRzAE_0VnXQ", "uj_bcWLWMtw", "xRyiudwo_jM", "pTMRT4CRUoM", "W8_LEBSOsPg", "YZuP7d99kCw"] 14:35:10.279 [debug] QUERY OK source="settings" db=0.4ms idle=315.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:35:10.280 [debug] QUERY OK source="settings" db=0.4ms idle=314.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:35:10.280 [debug] Running yt-dlp command for action: get_media_attributes 14:35:10.282 [debug] QUERY OK source="settings" db=0.3ms idle=316.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:35:10.282 [debug] QUERY OK source="settings" db=0.2ms queue=0.1ms idle=315.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:35:10.283 [debug] QUERY OK source="settings" db=0.2ms idle=6.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:35:10.283 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=gMrBK9rp6As --simulate --skip-download --output /downloads/White Raven/Season %(upload_date>%Y)S/s%(upload_date>%Y)Se%(upload_date>%m%d)S00 - %(title)S.%(ext)S --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --print-to-file %(.{id,title,live_status,original_url,description,aspect_ratio,duration,upload_date,timestamp,playlist_index,filename})j /tmp/pinchflat/data/60/d5/60d5751ba7eabb728bc0532ec55b88593eab6926efeddd7a0b8cca438a944f42.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:35:13.284 [info] {"source":"oban","duration":3577,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:35:14.919 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=gMrBK9rp6As --simulate --skip-download --output /downloads/White Raven/Season %(upload_date>%Y)S/s%(upload_date>%Y)Se%(upload_date>%m%d)S00 - %(title)S.%(ext)S --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --print-to-file %(.{id,title,live_status,original_url,description,aspect_ratio,duration,upload_date,timestamp,playlist_index,filename})j /tmp/pinchflat/data/60/d5/60d5751ba7eabb728bc0532ec55b88593eab6926efeddd7a0b8cca438a944f42.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 1 with: ERROR: [youtube] gMrBK9rp6As: Offline. 14:35:14.919 [error] Error creating media item 'gMrBK9rp6As' from URL: {:error, "ERROR: [youtube] gMrBK9rp6As: Offline.\n", 1} 14:35:14.921 [debug] QUERY OK source="media_items" db=0.8ms idle=1221.8ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [22] 14:35:14.924 [debug] QUERY OK source="tasks" db=0.5ms idle=959.1ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [203144, 22, ~U[2026-01-03 03:35:14Z], ~U[2026-01-03 03:35:14Z]] 14:35:14.924 [info] {"args":{"id":22},"id":203120,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":4963826,"event":"job:stop","queue_time":514315,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 14:35:15.976 [info] {"args":{"id":2},"id":203121,"meta":{},"system_time":1767411315976616340,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 14:35:15.977 [debug] QUERY OK source="sources" db=0.7ms idle=1052.2ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [2] 14:35:15.978 [debug] QUERY OK source="settings" db=0.6ms idle=1046.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:35:15.980 [debug] QUERY OK source="media_profiles" db=1.1ms idle=1012.4ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 14:35:15.981 [debug] QUERY OK source="settings" db=0.6ms idle=10.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:35:15.981 [debug] Fetching recent media IDs from YouTube API for playlist: UUeE3lj6pLX_gCd0Yvns517Q 14:35:15.982 [debug] QUERY OK source="settings" db=0.5ms idle=5.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:35:15.982 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 14:35:16.314 [debug] QUERY OK source="media_items" db=4.6ms idle=331.8ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND m0."media_id" IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [2, "0k6I__61QDc", "tAnxIOSrasI", "qGmURDZnDhc", "vBsPoGzQPxA", "TiJoEoREmdE", "C-CkKUyzQhA", "K1UWf6n1FmY", "9VKS1P-aXSc", "kt_SNpPa2w4", "oaXa30IfZMc", "pUBcfLBwPXw", "WkG24B0xw1E", "fBQxlA3KI5U", "HbeqOllBS9o", "li1fOq_qqHM", "rsqGEZeczYw", "d7HFMZOp0S4", "oipxUVJUZrc", "cTxE_oPyD9Q", "yJlKrUX8Bvk", "pYtoIdfLeHA", "qPMGKmyQ1AA", "7W651YDFjhc", "EfUXdMBXauI", "804ky1qeBuE", "DRMng-9g9Ng", "Nzp4LPVF_7M", "1psbOjlzkyA", "IwMM9c9Q0Pw", "xhbzG8V0eSA", "-CSyf5_q-XQ", "C__g4XPdYRY", "7-FRyPsqWG0", "0-fliBPsvZI", "xLZYbjMl3hY", "qs36351JQys", "-aty2xx6kTI", "Ty7NA3HvUsk", "w6xdmHLxzSM", "-5YmR5lvMlQ", "fFbRmFdCoYc", "XkPAB-oXAoU", "rTecGGMrRKc", "tHjU0F1najQ", "Z6otzigVvWM", "9m36Ncgctbg", "B1KUJbbpoK0", "rqGLjKlA_tM", "PZDZuoa3kJE", ...] 14:35:16.330 [debug] QUERY OK source="media_items" db=14.8ms idle=336.8ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [2] 14:35:16.335 [debug] QUERY OK source="tasks" db=1.1ms idle=351.6ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [203145, 2, ~U[2026-01-03 03:35:16Z], ~U[2026-01-03 03:35:16Z]] 14:35:16.336 [info] {"args":{"id":2},"id":203121,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":358605,"event":"job:stop","queue_time":641563,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 14:35:17.057 [info] GET /sources/14/media/32646/force_download 14:35:17.058 [debug] QUERY OK source="settings" db=0.8ms queue=0.1ms idle=724.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:35:17.060 [debug] QUERY OK source="settings" db=0.7ms queue=0.2ms idle=724.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:35:17.060 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 14:35:17.062 [error] #PID<0.11321.0> running PinchflatWeb.Endpoint (connection #PID<0.11320.0>, stream id 1) terminated Server: pinchflat.uiau7e.uncld.dev:80 (http) Request: GET /sources/14/media/32646/force_download ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/14/media/32646/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.11320.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/14/media/32646/force_download", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 41446}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "from" => "gptbot(at)openai.com", "host" => "pinchflat.uiau7e.uncld.dev", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.3; +https://openai.com/gptbot)", "via" => "2.0 Caddy", "x-forwarded-for" => "74.7.227.183", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https", "x-openai-host-hash" => "454925582" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.uiau7e.uncld.dev", method: "GET", owner: #PID<0.11321.0>, params: %{}, path_info: ["sources", "14", "media", "32646", "force_download"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.uiau7e.uncld.dev", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {10, 210, 0, 2}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"accept-encoding", "gzip, br, deflate"}, {"from", "gptbot(at)openai.com"}, {"host", "pinchflat.uiau7e.uncld.dev"}, {"user-agent", "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.3; +https://openai.com/gptbot)"}, {"via", "2.0 Caddy"}, {"x-forwarded-for", "74.7.227.183"}, {"x-forwarded-host", "pinchflat.uiau7e.uncld.dev"}, {"x-forwarded-proto", "https"}, {"x-openai-host-hash", "454925582"} ], request_path: "/sources/14/media/32646/force_download", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GIcbOo011PRP2aMAAiSh"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.11320.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/14/media/32646/force_download", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 41446}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "from" => "gptbot(at)openai.com", "host" => "pinchflat.uiau7e.uncld.dev", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.3; +https://openai.com/gptbot)", "via" => "2.0 Caddy", "x-forwarded-for" => "74.7.227.183", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https", "x-openai-host-hash" => "454925582" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/14/media/32646/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.11320.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/14/media/32646/force_download", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 41446}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "from" => "gptbot(at)openai.com", "host" => "pinchflat.uiau7e.uncld.dev", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.3; +https://openai.com/gptbot)", "via" => "2.0 Caddy", "x-forwarded-for" => "74.7.227.183", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https", "x-openai-host-hash" => "454925582" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.uiau7e.uncld.dev", method: "GET", owner: #PID<0.11321.0>, params: %{}, path_info: ["sources", "14", "media", "32646", "force_download"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.uiau7e.uncld.dev", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {10, 210, 0, 2}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"accept-en (truncated) 14:35:43.290 [info] {"source":"oban","duration":4162,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:36:00.266 [info] {"source":"oban","duration":329,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 14:36:12.147 [info] {"args":{"id":26},"id":203122,"meta":{},"system_time":1767411372147486067,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 14:36:12.148 [debug] QUERY OK source="sources" db=0.9ms idle=1012.8ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [26] 14:36:12.150 [debug] QUERY OK source="settings" db=0.5ms queue=0.1ms idle=451.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:36:12.151 [debug] QUERY OK source="media_profiles" db=0.7ms idle=452.3ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 14:36:12.152 [debug] QUERY OK source="settings" db=0.5ms queue=0.1ms idle=12.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:36:12.152 [debug] Fetching recent media IDs from YouTube API for playlist: UU6NY7eg1FxCfAVX58yL0cJw 14:36:12.153 [debug] QUERY OK source="settings" db=0.3ms queue=0.1ms idle=5.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:36:12.153 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 14:36:12.629 [debug] QUERY OK source="media_items" db=4.4ms idle=476.1ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND m0."media_id" IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [26, "o2tiLxanOd0", "3Hkalon06bY", "acwCbVzHnRM", "m3Cddar422Y", "QItYx18RK4M", "iFrwlymvtTM", "CBKzBKWhNmE", "twi0ZP1ZWew", "MChkfGtdrgI", "usOf_0SOPl8", "7CamgxCV_lg", "CYW3qAtbiSg", "hkLPA0MEUFk", "Z9APq63an58", "MA2a2BtDQtE", "a23hasz0yk8", "o4tK4PhiK_c", "2-lUv1_A_KU", "W6GGXQ4xVdg", "TOIuoWmEqxo", "JRXSDo6asDk", "iAodr4mipf0", "12wArTNB9dk", "CFZ0TtEbofU", "RwW6yAVtf6Q", "9RshF2jpgLo", "MV8U7XQUpnY", "G0o-l5G0M4s", "FVOkr5w0O0I", "1IFJive9Bvc", "kuc2kAgYD8M", "jHOE86EMHvA", "CjuPAweX08c", "LH0RNHxukJs", "o6OxlF4vAuw", "Qxfr7h-PzdA", "xU_1w6OSnac", "-6G1TNBxp08", "o-ripoq_oXU", "Uevcwu2GLMs", "BAoXgNQ_wRI", "p4NWPk9B20I", "XKxqsR_4w_I", "BNtAWc-vLX4", "ktw-dS-26Gk", "Idbcu-oVtDs", "JCxqgAhaJj4", "A0vzWxUO5TA", "6M0wfDl0LEI", ...] 14:36:12.638 [debug] QUERY OK source="media_items" db=4.6ms idle=483.2ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [26] 14:36:12.642 [debug] QUERY OK source="tasks" db=0.7ms idle=487.9ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [203146, 26, ~U[2026-01-03 03:36:12Z], ~U[2026-01-03 03:36:12Z]] 14:36:12.643 [info] {"args":{"id":26},"id":203122,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":494676,"event":"job:stop","queue_time":688211,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 14:36:13.292 [info] {"source":"oban","duration":1846,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:36:17.539 [info] GET /sources/23/media/21390 14:36:17.540 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "21390", "source_id" => "23"} Pipelines: [:browser] 14:36:17.541 [debug] QUERY OK source="media_items" db=1.0ms idle=1842.2ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [21390] 14:36:17.542 [debug] QUERY OK source="tasks" db=0.3ms queue=0.1ms idle=1844.1ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [21390] 14:36:17.543 [debug] QUERY OK source="sources" db=0.7ms idle=1393.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [23] 14:36:17.544 [debug] QUERY OK source="settings" db=0.4ms queue=0.1ms idle=846.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:36:17.545 [debug] QUERY OK source="settings" db=0.4ms queue=0.1ms idle=392.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:36:17.547 [debug] QUERY OK source="settings" db=0.4ms queue=0.1ms idle=5.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:36:17.549 [debug] QUERY OK source="media_profiles" db=0.5ms idle=5.9ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 14:36:17.552 [info] Sent 200 in 12ms 14:36:43.297 [info] {"source":"oban","duration":3978,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:36:46.274 [info] {"args":{"id":6},"id":203123,"meta":{},"system_time":1767411406274184469,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 14:36:46.275 [debug] QUERY OK source="sources" db=0.5ms queue=0.1ms idle=1576.4ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [6] 14:36:46.276 [debug] QUERY OK source="settings" db=0.4ms queue=0.1ms idle=1577.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:36:46.277 [debug] QUERY OK source="media_profiles" db=0.4ms queue=0.1ms idle=1015.6ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 14:36:46.278 [debug] QUERY OK source="settings" db=0.4ms queue=0.1ms idle=12.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:36:46.278 [debug] Fetching recent media IDs from YouTube API for playlist: UUg0m_Ah8P_MQbnn77-vYnYw 14:36:46.279 [debug] QUERY OK source="settings" db=0.2ms queue=0.1ms idle=4.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:36:46.279 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 14:36:46.632 [debug] QUERY OK source="media_items" db=3.1ms idle=353.3ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND m0."media_id" IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [6, "9i6Qm3LV89c", "2PC3HH4izX4", "dJLpdoPNdZ8", "lqRHAbkn9bo", "nlYgNjtr904", "uHKLZ8LcCJA", "V3LW3EWUxqE", "XaTvV6zJEXk", "AjnHxtnxMhk", "vuJTLm11QmQ", "vUzRuvCi6lw", "NlxSd2y_gfI", "ivcFXtMGdE8", "m17ugzx_Ab4", "o5QiLKbHeMI", "moqdU9sMrRk", "Yi55tGTEMqQ", "rHliVvnQ5Pg", "nCZSTFM-v9k", "uasm2RENDH4", "musiLNtEyRY", "uSvqlME0IsI", "Yo0hmtg8LNc", "HOFD3h9Up9w", "uibJMXaSB7c", "NGq1EoY_r2I", "IL-UZlbO3zI", "-_txeeBP6dg", "iH7BiZvsczM", "rIKuiZVHfZo", "HRw20b6hb_s", "xOQPha-de4A", "L6IXwj-_X1k", "_7--BDD2pxk", "Xaq53-12iW8", "bfb-ZBwdvpo", "3DLbHio3ivA", "xhpwyar65ms", "UzEr8RISXds", "tHU6PeO4WDs", "2z1AaBGzA1g", "y-t3hyj7Mz8", "5ZUXEQ6d0dM", "pn8GF5HaKZc", "wH3XASrC2DA", "C_oeOAG0G5E", "c8gYHg1lZCg", "cPEXUpZ6CWk", "jST7T0L_k_w", ...] 14:36:46.637 [debug] QUERY OK source="media_items" db=2.4ms idle=358.1ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [6] 14:36:46.640 [debug] QUERY OK source="tasks" db=0.6ms idle=360.4ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [203147, 6, ~U[2026-01-03 03:36:46Z], ~U[2026-01-03 03:36:46Z]] 14:36:46.641 [info] {"args":{"id":6},"id":203123,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":366434,"event":"job:stop","queue_time":872079,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 14:37:00.267 [info] {"source":"oban","duration":563,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 14:37:10.343 [info] {"args":{"id":9},"id":203124,"meta":{},"system_time":1767411430342729971,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 14:37:10.344 [debug] QUERY OK source="sources" db=0.4ms queue=0.1ms idle=645.2ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [9] 14:37:10.344 [debug] QUERY OK source="settings" db=0.3ms queue=0.1ms idle=646.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:37:10.345 [debug] QUERY OK source="media_profiles" db=0.2ms idle=646.7ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 14:37:10.346 [debug] QUERY OK source="settings" db=0.2ms queue=0.1ms idle=10.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:37:10.346 [debug] Fetching recent media IDs from YouTube API for playlist: UUy0Pr5u-MwGXXzp_GDd4m_g 14:37:10.346 [debug] QUERY OK source="settings" db=0.2ms queue=0.1ms idle=3.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:37:10.347 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 14:37:10.738 [debug] QUERY OK source="media_items" db=6.3ms idle=387.7ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND m0."media_id" IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [9, "97DBlIPSMkI", "V7Q9VnfzRqE", "Nub2m3iioSw", "Tpk6NNZubqU", "L4Eh-MtBFFk", "sa8p75KJqOc", "2gpPC0vsry0", "B2l4YfAav6M", "iL1qKxcaZnU", "NH5AAcLn03o", "8fOaCUvVQpY", "8aQ7sJ9EyaY", "ld0ngHU3YQ0", "uKzsA5kc8jw", "_A1dxw_T6dw", "TFVA0Bc5ajA", "IgFSOa0RBxs", "fGAe2cenBhs", "a6_0p8e42Y4", "vnR7jnJYN-k", "db6_ragog48", "SMKDYoXrZzw", "-fM_uGwlRlU", "kRxJ2g3T0zs", "GgU7L-z0kbA", "yFZJ6Qb8mDY", "YkyTbtgcfJU", "k01ARI01oMU", "ToFKhGfGgc0", "MU8JlJIuwh4", "IY36QIh6VG8", "brtcZFHW0P4", "A39Glu9I9fk", "Ib_1jixUkLw", "c9UIDwF7oS4", "CcSE-YHRJP4", "Tpmb_mTKuhs", "yNbz6f5dMLE", "BAVQcOWZi-Y", "Fa7RxeYNUTw", "teIoBQdGT5s", "UqykI_3CT-g", "vBeWkDTK6Eg", "qOp_nyKqmic", "fEqSlPpXHYk", "lII4lxNpPVg", "BaxD8BI3wI4", "me_afppRbyI", "C69B2k3fAvs", ...] 14:37:10.747 [debug] QUERY OK source="media_items" db=6.8ms idle=395.5ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [9] 14:37:10.751 [debug] QUERY OK source="tasks" db=0.9ms idle=403.8ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [203148, 9, ~U[2026-01-03 03:37:10Z], ~U[2026-01-03 03:37:10Z]] 14:37:10.752 [info] {"args":{"id":9},"id":203124,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":409064,"event":"job:stop","queue_time":773439,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 14:37:13.303 [info] {"source":"oban","duration":4500,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:37:19.132 [info] GET /sources/27/media/58541 14:37:19.132 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "58541", "source_id" => "27"} Pipelines: [:browser] 14:37:19.134 [debug] QUERY OK source="media_items" db=1.4ms queue=0.1ms idle=768.9ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [58541] 14:37:19.136 [debug] QUERY OK source="tasks" db=0.9ms idle=437.3ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [58541] 14:37:19.136 [debug] QUERY OK source="sources" db=1.3ms idle=437.4ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [27] 14:37:19.138 [debug] QUERY OK source="settings" db=0.7ms idle=439.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:37:19.140 [debug] QUERY OK source="settings" db=0.8ms queue=0.1ms idle=440.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:37:19.142 [debug] QUERY OK source="settings" db=0.8ms queue=0.1ms idle=6.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:37:19.143 [debug] QUERY OK source="media_profiles" db=0.4ms idle=6.8ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 14:37:19.161 [info] Sent 200 in 29ms 14:37:21.386 [info] {"args":{"id":10},"id":203125,"meta":{},"system_time":1767411441386608762,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 14:37:21.388 [debug] QUERY OK source="sources" db=1.0ms queue=0.1ms idle=689.2ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [10] 14:37:21.389 [debug] QUERY OK source="settings" db=0.6ms queue=0.1ms idle=690.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:37:21.390 [debug] QUERY OK source="media_profiles" db=0.6ms idle=691.6ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 14:37:21.391 [debug] QUERY OK source="settings" db=0.9ms idle=12.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:37:21.391 [debug] Fetching recent media IDs from YouTube API for playlist: UUmHz7DQbbkcY_UoWY8bBJLw 14:37:21.392 [debug] QUERY OK source="settings" db=0.5ms queue=0.1ms idle=5.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:37:21.393 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 14:37:21.777 [debug] QUERY OK source="media_items" db=6.0ms idle=382.2ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND m0."media_id" IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [10, "PhjtM9ePmYY", "BYRqpIciNLg", "KKoDQ42Fcpk", "AifAIqHezb8", "sjsS60OTXSQ", "KVouvdlUtGQ", "Th4RJNVZN3Q", "a9Zj-iWYC4w", "Z2_oFD9DMd0", "OW9WywZF_d4", "hFSwWzxrqUA", "XsPrNwyLDJM", "9NUcKPnPMEw", "GvP1jo9RstE", "8jul3DEwgMY", "e4K0Co-JeKQ", "wxoYf3KBlis", "YFQm8Hk73ug", "iu5rnQkfO6M", "RESslu3Bhuk", "vn9VDbacUgQ", "mLozqDnhqpQ", "GWXCCBsOMSg", "OXIpbrvFxfE", "hbZb1Q0mM7k", "lj2JTO1L1Tc", "dGjMw1SkmjU", "vBQFfmlTK_4", "91WqepC8kS0", "UUZfxQhKmfA", "aPsq5nqvhxg", "AJ7atBkisOU", "2fZ0nkP5dfo", "qKZXQGCLRJY", "F26dxTMmW10", "cYPuhhATDXc", "uLrOyIpjkZ8", "kDu56nXRqGQ", "I4lBTlClwww", "h23xksD0dN0", "SgameZUfeGo", "NPgbgiRJCxA", "-v88e4T8i_E", "HkgV_-nJOuE", "3h1vM0lIrpM", "gjExqY_iB38", "5ScP_aPBEiQ", "t5CkW-CKTZs", "gKKRYcy4BbU", ...] 14:37:21.779 [debug] QUERY OK source="settings" db=0.7ms idle=389.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:37:21.780 [debug] QUERY OK source="settings" db=0.5ms idle=389.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:37:21.780 [debug] Running yt-dlp command for action: get_media_attributes 14:37:21.782 [debug] QUERY OK source="settings" db=0.3ms idle=390.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:37:21.783 [debug] QUERY OK source="settings" db=0.2ms idle=389.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:37:21.783 [debug] QUERY OK source="settings" db=0.3ms idle=6.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:37:21.783 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=Z2_oFD9DMd0 --simulate --skip-download --output /downloads/Switch Angel/Season %(upload_date>%Y)S/s%(upload_date>%Y)Se%(upload_date>%m%d)S00 - %(title)S.%(ext)S --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --print-to-file %(.{id,title,live_status,original_url,description,aspect_ratio,duration,upload_date,timestamp,playlist_index,filename})j /tmp/pinchflat/data/bd/e8/bde86552423e5581b257f5befc8e88b76a2d0344f34efea283eaeeed3f03eab4.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:37:26.300 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=Z2_oFD9DMd0 --simulate --skip-download --output /downloads/Switch Angel/Season %(upload_date>%Y)S/s%(upload_date>%Y)Se%(upload_date>%m%d)S00 - %(title)S.%(ext)S --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --print-to-file %(.{id,title,live_status,original_url,description,aspect_ratio,duration,upload_date,timestamp,playlist_index,filename})j /tmp/pinchflat/data/bd/e8/bde86552423e5581b257f5befc8e88b76a2d0344f34efea283eaeeed3f03eab4.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 1 with: ERROR: [youtube] Z2_oFD9DMd0: This live event will begin in a few moments. 14:37:26.300 [error] Error creating media item 'Z2_oFD9DMd0' from URL: {:error, "ERROR: [youtube] Z2_oFD9DMd0: This live event will begin in a few moments.\n", 1} 14:37:26.303 [debug] QUERY OK source="media_items" db=2.3ms idle=908.1ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [10] 14:37:26.308 [debug] QUERY OK source="tasks" db=0.9ms idle=609.1ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [203149, 10, ~U[2026-01-03 03:37:26Z], ~U[2026-01-03 03:37:26Z]] 14:37:26.309 [info] {"args":{"id":10},"id":203125,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":4921561,"event":"job:stop","queue_time":303276,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 14:37:27.407 [info] {"args":{"id":11},"id":203126,"meta":{},"system_time":1767411447407266661,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 14:37:27.408 [debug] QUERY OK source="sources" db=0.7ms idle=1098.6ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [11] 14:37:27.409 [debug] QUERY OK source="settings" db=0.4ms idle=1092.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:37:27.409 [debug] QUERY OK source="media_profiles" db=0.5ms idle=1012.8ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 14:37:27.410 [debug] QUERY OK source="settings" db=0.4ms idle=10.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:37:27.410 [debug] Fetching recent media IDs from YouTube API for playlist: UUJ901NqoRaXMnIm7aOjLyuA 14:37:27.411 [debug] QUERY OK source="settings" db=0.4ms idle=3.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:37:27.411 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 14:37:28.011 [debug] QUERY OK source="media_items" db=4.6ms idle=598.4ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND m0."media_id" IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [11, "1ji7g8qZJ_4", "xP5WmZg7OMg", "HBoV87Jndh8", "-zpzRklxMEo", "9AX85j6Lp4M", "p2U9d4FWDaI", "hfT6XVSa2xE", "qBOKYwe8NzA", "Cf5jL5JNq7k", "bAV0y2acB9c", "XE6JvrChQ_Q", "Efv456Ks9ms", "qgiJ4C5s46U", "KaVC_mTFqHk", "M6gat-hai0I", "_xwFJzOtQv0", "Ao-M_YvfhXY", "SKHWQwf0ago", "gmuFtWZG3v8", "H4oeJ87TMt4", "rS2fDo6mhS8", "aOF6Pe_bTeI", "x8B3Z91qkoE", "fVvYTWAHoBQ", "8r6xqWTqcPQ", "k677A--BwGE", "CSTtrz8t1eg", "w6Ej3Iim4Ic", "jO8S8_KX6p0", "tslsVdOjWFM", "dckL2BCDYmQ", "E3N8_pRRtGM", "qeOEDUgy5xA", "MIPvNqPwMxc", "V2GelRPp5fg", "jWH5H6Y6T-A", "1ObIAwtqt9k", "yVdv1xVggZ4", "Pxpz4211gMI", "UEUAHI0AZu4", "gitCR-iTofw", "eTg2rHYqUZc", "QnOIm4U7Dzs", "RYNFRbP4OWQ", "R3kNCz120XM", "vMflt2fJZYw", "4DkhBa_L_4E", "4IqFTPw6Mzk", "AepfCktyPLk", ...] 14:37:28.022 [debug] QUERY OK source="media_items" db=9.1ms idle=604.3ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [11] 14:37:28.028 [debug] QUERY OK source="tasks" db=0.8ms idle=15.8ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [203150, 11, ~U[2026-01-03 03:37:28Z], ~U[2026-01-03 03:37:28Z]] 14:37:28.029 [info] {"args":{"id":11},"id":203126,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":621251,"event":"job:stop","queue_time":659001,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 14:37:43.308 [info] {"source":"oban","duration":3486,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:38:00.269 [info] {"source":"oban","duration":591,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 14:38:06.528 [info] {"args":{"id":15},"id":203127,"meta":{},"system_time":1767411486527647640,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 14:38:06.528 [debug] QUERY OK source="sources" db=0.4ms idle=829.3ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [15] 14:38:06.529 [debug] QUERY OK source="settings" db=0.6ms idle=830.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:38:06.530 [debug] QUERY OK source="media_profiles" db=0.4ms idle=831.0ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 14:38:06.531 [debug] QUERY OK source="settings" db=0.3ms queue=0.1ms idle=10.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:38:06.531 [debug] Fetching recent media IDs from YouTube API for playlist: UU5qRAYQmCLx8hFGIiTWSQvA 14:38:06.532 [debug] QUERY OK source="settings" db=0.4ms idle=4.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:38:06.532 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 14:38:06.984 [debug] QUERY OK source="media_items" db=1.6ms idle=453.8ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND m0."media_id" IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [15, "EMmIdkwn6a4", "EBT3EIoJpDc", "P2j2jM33fbk", "KuYhCywx8JM", "EteM8YNAFu8", "-KN9sfrroJA", "35D6yzUQM8I", "pIqvmN8ePkc", "rR5RqL2cjPE", "B2mmx85ZIsE", "b-jTeTJ1ekk", "Qa4dYWqfgmg", "TZZgrQEsl4c", "hMFEigXIhgA", "yf8ozrYeFEk", "QoCmQRZKU_c", "Qa9rFTiItTE", "Kxw9tq49VBM", "aLj4QgEf7gQ", "-D7c5td5vhw", "UNJUpex0blc", "Afa2PJq3okY", "r9A1srY7LdU", "m6YZoOWrLlk", "RKSlnQcuZt4", "qEjkDPJmKIo", "fZirHVq8wp0", "jdB56zAMJgE", "F92Oe7JuDtI", "luEgOCX58gw", "9CkNfdQpsuo", "eC3Mv474A8c", "mq6lsIgLLqY", "Wqmn4OTW6Fw", "4yYMQFLVRNc", "TsdMEmH2Lsw", "HQeTYLxz6iY", "V-JtebgnFoM", "2cXS3i36Kh8", "wznCZtGitN8", "2tYVGxZMOiQ", "9bxljq6ljbE", "9hHVjpo_HDA", "w8bqGx4ZtYQ", "yFYGd9irJ5k", "WTfhL2-cT1U", "LCR3ZsqWhuo", "Tj09jojsiaM", "_GZvVqjqlM0", ...] 14:38:06.989 [debug] QUERY OK source="media_items" db=3.2ms idle=456.4ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [15] 14:38:06.991 [debug] QUERY OK source="tasks" db=0.5ms idle=458.7ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [203151, 15, ~U[2026-01-03 03:38:06Z], ~U[2026-01-03 03:38:06Z]] 14:38:06.992 [info] {"args":{"id":15},"id":203127,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":464247,"event":"job:stop","queue_time":781650,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 14:38:11.544 [info] {"args":{"id":18},"id":203128,"meta":{},"system_time":1767411491543943955,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 14:38:11.545 [debug] QUERY OK source="sources" db=0.7ms idle=845.3ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [18] 14:38:11.546 [debug] QUERY OK source="settings" db=0.7ms idle=846.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:38:11.547 [debug] QUERY OK source="media_profiles" db=0.9ms idle=847.3ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 14:38:11.548 [debug] QUERY OK source="settings" db=0.6ms idle=9.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:38:11.548 [debug] Fetching recent media IDs from YouTube API for playlist: UUuisDAMnvHMYuLFRedMgmVw 14:38:11.549 [debug] QUERY OK source="settings" db=0.8ms idle=4.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:38:11.549 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 14:38:11.938 [debug] QUERY OK source="media_items" db=5.2ms queue=0.1ms idle=387.5ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND m0."media_id" IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [18, "mf2Em7F_qDM", "PjvBtlIGGQU", "EF_PO-pALOQ", "j9eh7huEF4A", "y3FGuwfGzL0", "ZWH_eu9wdUE", "UccWWifa8jA", "0L8xWydKOhk", "CkSloYV3ay4", "SkQ7ywGW2HY", "QM3qu001Xdk", "jOTurZWIEmw", "pojDco-WhA4", "GD19Y1VYBKY", "cvViWSBLu-U", "wXm5ocXv9ho", "uB1Tk9eXQbk", "I7vb-PGArW4", "0h9qvAA5dfQ", "7yx-SecBATo", "oj1ySj7TVJk", "dtTdjRB4Q4g", "mpfcVNb8Mhs", "D3MFnCKv2Mc", "458_RTLWN2E", "W26HiyQ5k1s", "w4NDxPYJs1I", "cxuEV05UN7U", "5cPjR5FVDOw", "nJhbZNSrP4c", "X9Eu7mui35E", "wrgZHIpa6F0", "JEN7jfNqy1A", "v31DYiS2LbY", "iJfD5wWLvuM", "qPVTMbiyPLE", "rM_nvsztYlw", "IoD1j3ZG-SQ", "DDnqxbWvIgQ", "HIhF6C1yc7M", "DlNIxjiqQvs", "JO0-kOXXMEw", "2DihqSsed3w", "uDlvlF5iKz8", "v2jg_5WZ41o", "JekH9K8_SS8", "xVV_6qW_Ho8", "qYOABpvD49s", "VAw8zvyLmfE", ...] 14:38:11.948 [debug] QUERY OK source="media_items" db=6.3ms idle=395.8ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [18] 14:38:11.954 [debug] QUERY OK source="tasks" db=0.9ms idle=404.2ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [203152, 18, ~U[2026-01-03 03:38:11Z], ~U[2026-01-03 03:38:11Z]] 14:38:11.955 [info] {"args":{"id":18},"id":203128,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":410832,"event":"job:stop","queue_time":834705,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 14:38:13.311 [info] {"source":"oban","duration":2767,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:38:16.841 [info] GET /sources/23/media/21396 14:38:16.841 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "21396", "source_id" => "23"} Pipelines: [:browser] 14:38:16.843 [debug] QUERY OK source="media_items" db=0.7ms idle=1143.5ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [21396] 14:38:16.845 [debug] QUERY OK source="tasks" db=1.0ms idle=1144.9ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [21396] 14:38:16.845 [debug] QUERY OK source="sources" db=1.1ms idle=1144.9ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [23] 14:38:16.846 [debug] QUERY OK source="settings" db=0.7ms idle=291.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:38:16.847 [debug] QUERY OK source="settings" db=0.3ms idle=147.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:38:16.848 [debug] QUERY OK source="settings" db=0.7ms idle=4.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:38:16.849 [debug] QUERY OK source="media_profiles" db=0.6ms idle=4.1ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 14:38:16.883 [info] Sent 200 in 42ms 14:38:22.589 [info] {"args":{"id":16},"id":203129,"meta":{},"system_time":1767411502589137758,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 14:38:22.591 [debug] QUERY OK source="sources" db=1.1ms queue=0.1ms idle=1890.8ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [16] 14:38:22.592 [debug] QUERY OK source="settings" db=0.4ms queue=0.1ms idle=1892.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:38:22.592 [debug] QUERY OK source="media_profiles" db=0.6ms idle=1018.4ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 14:38:22.593 [debug] QUERY OK source="settings" db=0.5ms idle=12.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:38:22.593 [debug] Fetching recent media IDs from YouTube API for playlist: UUPPfK7Nq_yQR84rn1wcTXBg 14:38:22.594 [debug] QUERY OK source="settings" db=0.5ms queue=0.1ms idle=5.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:38:22.594 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 14:38:23.004 [debug] QUERY OK source="media_items" db=5.0ms idle=407.8ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND m0."media_id" IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [16, "BiTNUZ2zONY", "7pVLE7ggkcc", "YAh-xEteBz4", "6hNpMT5OwGo", "vx3oGZYqxm4", "7W_ZSNuS-4w", "CxUC2HXvO84", "RxapAZRYJ6I", "f2ainZL8Tzk", "KJtASaKc95g", "yBCh5cyI0Po", "dg_HQL3GBcY", "ZiVvXPpo0eE", "YO1TnWptv3o", "HwnBnsQBeOA", "CCE2v3oIa74", "OWVPYr9e76Y", "VApJtIyMEec", "XtOIQYVq26o", "gZL1KzV54Cw", "kmU-Eazta1s", "XXthHXEpEP8", "dPw_HkMgYI0", "rxq-TvgNCBU", "SaCbUtTuLhA", "TWLqSk4ZlN0", "p7_rduK5WA0", "lNZ56C-f4a8", "GlK3f1cs_l4", "Yabwyb14-BQ", "WupRwvJ7sOc", "MhpoNL1gZbw", "yUfm6AbtJ0g", "y8zfgIgZ4c0", "gOwjmKMmkV4", "aTiunvocl5c", "KebjX3KEgWQ", "0T2MYXljL5o", "i7sbS92R4cg", "66CDGzjLBtY", "T_W0FWiJmM8", "u_80rUKItGc", "C9_wibbg1Ug", "A4mg1ZUb-7s", "YmUfZt4Ku9s", "DoWsgrlIjYU", "gc5ojxTuwOg", "3AMdPMoGJus", "htYY8VwN-9g", ...] 14:38:23.010 [debug] QUERY OK source="media_items" db=4.7ms idle=414.1ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [16] 14:38:23.015 [debug] QUERY OK source="tasks" db=0.7ms idle=419.5ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [203153, 16, ~U[2026-01-03 03:38:23Z], ~U[2026-01-03 03:38:23Z]] 14:38:23.016 [info] {"args":{"id":16},"id":203129,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":426080,"event":"job:stop","queue_time":886776,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 14:38:43.314 [info] {"source":"oban","duration":1671,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:39:00.270 [info] {"source":"oban","duration":328,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 14:39:10.185 [info] GET /sources/23/media/21399 14:39:10.185 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "21399", "source_id" => "23"} Pipelines: [:browser] 14:39:10.186 [debug] QUERY OK source="media_items" db=0.4ms queue=0.1ms idle=1487.3ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [21399] 14:39:10.187 [debug] QUERY OK source="tasks" db=0.4ms idle=1488.4ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [21399] 14:39:10.188 [debug] QUERY OK source="sources" db=0.5ms idle=1488.5ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [23] 14:39:10.189 [debug] QUERY OK source="settings" db=0.2ms idle=494.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:39:10.189 [debug] QUERY OK source="settings" db=0.1ms idle=490.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:39:10.190 [debug] QUERY OK source="settings" db=0.1ms idle=3.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:39:10.190 [debug] QUERY OK source="media_profiles" db=0.1ms idle=2.8ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 14:39:10.213 [info] Sent 200 in 27ms 14:39:13.317 [info] {"source":"oban","duration":1600,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:39:24.741 [info] {"args":{"id":20},"id":203130,"meta":{},"system_time":1767411564740794930,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 14:39:24.742 [debug] QUERY OK source="sources" db=0.9ms idle=1012.7ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [20] 14:39:24.743 [debug] QUERY OK source="settings" db=0.5ms idle=43.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:39:24.744 [debug] QUERY OK source="media_profiles" db=0.4ms idle=44.7ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 14:39:24.745 [debug] QUERY OK source="settings" db=0.2ms queue=0.1ms idle=11.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:39:24.745 [debug] Fetching recent media IDs from YouTube API for playlist: UU3HjB3X8jeENm46HCkI0Inw 14:39:24.746 [debug] QUERY OK source="settings" db=0.2ms queue=0.1ms idle=5.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:39:24.746 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 14:39:25.246 [debug] QUERY OK source="media_items" db=3.6ms idle=499.9ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND m0."media_id" IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [20, "CISwNCR8EXc", "EiIJqc5mV90", "8xJUjtnu72E", "Whh2rDVxvYg", "VybtaBZZqCg", "fuIOAraiRAY", "Ri4qqynMLHk", "xglNhNm95KQ", "5hEq1j_TsEY", "9f5iUsFWqoo", "0SXIhVupLZY", "3gAJpHP3yg4", "8zlnEbQgP74", "EnTFdexbFrM", "P3AU8vUwvAs", "4dQvS_n0uy4", "T5CRSwoP5_w", "cd8IcmBLpXc", "L4nAcT3QYkA", "5gskEcRE1uo", "1xywnh3DqFQ", "fXeqjU4tHqo", "YBMxdPCG_PY", "GB5_4JUB9hc", "EtAUdnvt0kc", "y-5D2HhLbso", "q8kP0pRFRMc", "8mQkTPoWfPo", "U5I92UivGzU", "UoMTKhqTf1U", "oIvzxlDViTo", "kCnh99-yZIs", "orABz0cfQZY", "VKt2PXkavyU", "kYwyB7o7BJs", "UB1FC4Nim1Y", "kN_eMzoJJmA", "4hdpejFLkPc", "ArSlY77uV1w", "2me_AlMFJh8", "OlKsICCPadE", "SjpJZ66rGaU", "iRZp_9irH2g", "CN9qeuO04A4", "BUnuun2sL-8", "XSIfSz3ZEGc", "hW5pHqeC1t4", "_cJV_l9tlaU", "ChT4bsCpwcU", ...] 14:39:25.255 [debug] QUERY OK source="media_items" db=4.3ms idle=507.6ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [20] 14:39:25.259 [debug] QUERY OK source="tasks" db=0.5ms idle=512.9ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [203154, 20, ~U[2026-01-03 03:39:25Z], ~U[2026-01-03 03:39:25Z]] 14:39:25.260 [info] {"args":{"id":20},"id":203130,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":519007,"event":"job:stop","queue_time":739987,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 14:39:27.748 [info] {"args":{"id":21},"id":203131,"meta":{},"system_time":1767411567748167132,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 14:39:27.749 [debug] QUERY OK source="sources" db=0.6ms idle=1049.5ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [21] 14:39:27.750 [debug] QUERY OK source="settings" db=0.6ms idle=1050.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:39:27.751 [debug] QUERY OK source="media_profiles" db=0.9ms idle=1012.1ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 14:39:27.752 [debug] QUERY OK source="settings" db=0.6ms idle=10.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:39:27.752 [debug] Fetching recent media IDs from YouTube API for playlist: UU2-i3KuYoODXsM99Z3-Gm0A 14:39:27.753 [debug] QUERY OK source="settings" db=0.4ms idle=4.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:39:27.753 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 14:39:28.116 [debug] QUERY OK source="media_items" db=4.3ms idle=362.5ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND m0."media_id" IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [21, "J5rMffRWoaE", "SpNjg65s29I", "8YoFYb6ahAc", "2z0gjjea0mQ", "2d3dU0R4Sk4", "_TFHZ9W3Jt8", "dqjpFcJG5Cc", "Pm0PXgXMNVY", "YXwzRiYgHHc", "mUK6UT_7PZo", "nE49QFWymsI", "WY4rfxfFsVA", "LHyVvVpA0xM", "HYIwk4qL2os", "RZBQe4RLdZ8", "DN5ES5PlK6c", "OaO4UInG53A", "UqcJk1mPcnQ", "NqSJZesKtFs", "3bsFFOwsQzA", "EaXJ1rQ2v5k", "jnV5Ptgg1Xc", "rXghFt-g_OM", "Y_MU28GV-M0", "OZ1fXb4gcv0", "t7JeRNvBG40", "XG41sdzNz7I", "rQFtIiVV7RA", "TviKrv1FTzc", "0iH3eN6DUbM", "AjzhbnNiJO0", "3Y2fdnw7AwM", "8Z_XpRjS2oo", "RY1Nnw_qOGc", "pUB0TU9UQhI", "eVR3mgSxjUk", "5hGYObRZMPQ", "4MemHNHi_YE", "yM6u1-_JNXo", "VGLq2Tjokl4", "XpV4r2KB0UA", "cvrpvL1kO_8", "Q4kS9l81A0k", "Mq47ro7Pc00", "GAu1Y-5EPeM", "dNIc1vTlbDc", "S1zqKNfggRQ", "zquTrv6kv-U", "-H6sKLcAL9I", ...] 14:39:28.126 [debug] QUERY OK source="media_items" db=7.9ms idle=368.0ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [21] 14:39:28.130 [debug] QUERY OK source="tasks" db=0.7ms idle=376.2ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [203155, 21, ~U[2026-01-03 03:39:28Z], ~U[2026-01-03 03:39:28Z]] 14:39:28.144 [info] {"args":{"id":21},"id":203131,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":382116,"event":"job:stop","queue_time":827327,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 14:39:43.321 [info] {"source":"oban","duration":2224,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:39:55.879 [info] GET /sources/17/media/43355 14:39:55.879 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "43355", "source_id" => "17"} Pipelines: [:browser] 14:39:55.880 [debug] QUERY OK source="media_items" db=0.4ms idle=1057.6ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [43355] 14:39:55.881 [debug] QUERY OK source="tasks" db=0.4ms queue=0.1ms idle=181.4ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [43355] 14:39:55.881 [debug] QUERY OK source="sources" db=0.6ms idle=181.4ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [17] 14:39:55.882 [debug] QUERY OK source="settings" db=0.2ms idle=182.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:39:55.882 [debug] QUERY OK source="settings" db=0.2ms idle=57.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:39:55.883 [debug] QUERY OK source="settings" db=0.2ms idle=3.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:39:55.885 [debug] QUERY OK source="media_profiles" db=0.4ms idle=3.7ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 14:39:55.887 [info] Sent 200 in 8ms 14:40:00.271 [info] {"source":"oban","duration":665,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 14:40:13.324 [info] {"source":"oban","duration":2491,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:40:38.115 [info] GET /sources/14/media/46556 14:40:38.115 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "46556", "source_id" => "14"} Pipelines: [:browser] 14:40:38.116 [debug] QUERY OK source="media_items" db=0.5ms queue=0.1ms idle=1180.5ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [46556] 14:40:38.117 [debug] QUERY OK source="tasks" db=0.4ms idle=418.0ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [46556] 14:40:38.118 [debug] QUERY OK source="sources" db=1.1ms idle=418.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [14] 14:40:38.119 [debug] QUERY OK source="settings" db=0.4ms idle=419.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:40:38.120 [debug] QUERY OK source="settings" db=0.5ms queue=0.1ms idle=182.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:40:38.121 [debug] QUERY OK source="settings" db=0.5ms queue=0.1ms idle=4.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:40:38.123 [debug] QUERY OK source="media_profiles" db=0.7ms idle=5.0ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 14:40:38.160 [info] Sent 200 in 44ms 14:40:43.326 [info] {"source":"oban","duration":1629,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:41:00.273 [info] {"source":"oban","duration":652,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 14:41:13.332 [info] {"source":"oban","duration":4295,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:41:14.022 [info] GET /media/f9a5ae9a-a6da-4df1-903d-c0c4a225457d/stream 14:41:14.022 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.stream/2 Parameters: %{"uuid" => "f9a5ae9a-a6da-4df1-903d-c0c4a225457d", "v" => "1762135536"} Pipelines: [:maybe_basic_auth] 14:41:14.024 [debug] QUERY OK source="media_items" db=1.2ms idle=987.8ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."uuid" = ?) ["f9a5ae9a-a6da-4df1-903d-c0c4a225457d"] 14:41:14.037 [debug] Invalid range request for media item: f9a5ae9a-a6da-4df1-903d-c0c4a225457d - serving full file 14:41:14.037 [info] Sent 200 in 14ms 14:41:43.335 [info] {"source":"oban","duration":2427,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:41:46.449 [info] GET /sources/13/media/12742 14:41:46.449 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "12742", "source_id" => "13"} Pipelines: [:browser] 14:41:46.450 [debug] QUERY OK source="media_items" db=0.4ms queue=0.1ms idle=1307.4ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [12742] 14:41:46.451 [debug] QUERY OK source="tasks" db=0.7ms queue=0.1ms idle=667.9ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [12742] 14:41:46.452 [debug] QUERY OK source="sources" db=1.0ms idle=667.8ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [13] 14:41:46.453 [debug] QUERY OK source="oban_jobs" db=0.4ms idle=669.3ms SELECT o0."id", o0."state", o0."queue", o0."worker", o0."args", o0."meta", o0."tags", o0."errors", o0."attempt", o0."attempted_by", o0."max_attempts", o0."priority", o0."attempted_at", o0."cancelled_at", o0."completed_at", o0."discarded_at", o0."inserted_at", o0."scheduled_at", o0."id" FROM "oban_jobs" AS o0 WHERE (o0."id" = ?) [187554] 14:41:46.454 [debug] QUERY OK source="settings" db=0.4ms queue=0.1ms idle=308.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:41:46.455 [debug] QUERY OK source="settings" db=0.5ms idle=4.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:41:46.456 [debug] QUERY OK source="settings" db=0.4ms idle=4.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:41:46.458 [debug] QUERY OK source="media_profiles" db=0.5ms idle=5.5ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 14:41:46.462 [info] Sent 200 in 13ms 14:42:00.275 [info] {"source":"oban","duration":340,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 14:42:13.338 [info] {"source":"oban","duration":1860,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:42:21.243 [info] {"args":{"id":19},"id":203132,"meta":{},"system_time":1767411741242972682,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 14:42:21.244 [debug] QUERY OK source="sources" db=0.8ms idle=1460.4ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [19] 14:42:21.245 [debug] QUERY OK source="settings" db=0.5ms idle=1016.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:42:21.246 [debug] QUERY OK source="media_profiles" db=0.6ms idle=462.6ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 14:42:21.247 [debug] QUERY OK source="settings" db=0.4ms idle=9.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:42:21.247 [debug] Fetching recent media IDs from YouTube API for playlist: UUaYhH3F6iB3KyW3afTHk5XA 14:42:21.248 [debug] QUERY OK source="settings" db=0.4ms idle=4.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:42:21.248 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 14:42:21.790 [debug] QUERY OK source="media_items" db=3.6ms queue=0.1ms idle=541.6ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND m0."media_id" IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [19, "mUlKcxGWvrQ", "ydfuNK4wSik", "x6cNQykYdEM", "SvyVS7zvquc", "l4O2F-1BWVI", "LYXADYUSTSg", "HpL40FdPGqk", "Wre5VWHxSug", "PdUu77SAH0I", "VCflrtok9hQ", "haEa6h8Ptf0", "c_-f7G9VSPw", "7rSLcNznix4", "OLXr-B-xwY8", "X05FPJq6_Oc", "kuL-trgOvq8", "WpBEifN8BYw", "YETks_YtraY", "bwKKd4N8Q2E", "PpNfOqbt0a8", "GyifuiQ6p48", "SkoFBCBASto", "-GNid2M6IC8", "muehDmLuJSw", "nBx5yssxPDk", "Q6vzDo6it9o", "AH9Z6_PlKhA", "dZfthyLyjDk", "j9UuSMaqX9Q", "jmoVFLUvyD0", "tKm_pnNEDsc", "boVAiizeh1M", "FNtBH6k7Jmo", "MDhN5WGOJ_o", "P-UQX5L_Ff0", "kys3lRzOOEY", "VDHSC2Dl8f0", "JU0uEdyPKlE", "0sSWAzq7rjc", "HOLXNrjWeuo"] 14:42:21.795 [debug] QUERY OK source="media_items" db=1.9ms idle=547.5ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [19] 14:42:21.800 [debug] QUERY OK source="tasks" db=1.0ms idle=550.9ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [203156, 19, ~U[2026-01-03 03:42:21Z], ~U[2026-01-03 03:42:21Z]] 14:42:21.801 [info] {"args":{"id":19},"id":203132,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":557531,"event":"job:stop","queue_time":597520,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 14:42:22.253 [info] {"args":{"id":23},"id":203133,"meta":{},"system_time":1767411742252679682,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 14:42:22.254 [debug] QUERY OK source="sources" db=0.5ms queue=0.1ms idle=453.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [23] 14:42:22.255 [debug] QUERY OK source="settings" db=0.5ms idle=453.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:42:22.256 [debug] QUERY OK source="media_profiles" db=0.3ms queue=0.1ms idle=444.9ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 14:42:22.257 [debug] QUERY OK source="settings" db=0.8ms queue=0.1ms idle=12.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:42:22.257 [debug] Fetching recent media IDs from YouTube API for playlist: UUSHvlfXUGYGWmDBg-afA5Bg 14:42:22.258 [debug] QUERY OK source="settings" db=0.5ms idle=5.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:42:22.258 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 14:42:22.586 [debug] QUERY OK source="media_items" db=4.1ms queue=0.1ms idle=327.4ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND m0."media_id" IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [23, "QASZbKPkS08", "pr7MMAFzHe8", "DG0BSdc6kKg", "o7DJZCU8q34", "G5A2QGwRmS4", "PER4GK9LCTA", "GzIS1WZFKtc", "24P4MFV-HrM", "6x6df3uagb4", "vALU9LhFKhE", "KF1grNBv5hU", "SLSPmp8-tXE", "53liPfHBgYQ", "zykmoM0qjbA", "boyfPk5qdBM", "H2VYuo7yb2o", "75_mYLpHDr4", "PSnlGB9aKVI", "vFBFSi2XqrQ", "X2z1ugOwR2A", "ePV6FKD1J9U", "ipxj_tl_6XY", "6l9-ctzSbCo", "xu3DTyCW3Yk", "wpAt0QaSk7U", "NXy9Sg0KIMY", "ml5AG_Q0y6w", "h_Uq6-e06y8", "37_rLteuwG4", "QCbf0kOJ8lA"] 14:42:22.589 [debug] QUERY OK source="media_items" db=0.9ms idle=333.4ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [23] 14:42:22.593 [debug] QUERY OK source="tasks" db=0.7ms idle=334.5ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [203157, 23, ~U[2026-01-03 03:42:22Z], ~U[2026-01-03 03:42:22Z]] 14:42:22.594 [info] {"args":{"id":23},"id":203133,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":341177,"event":"job:stop","queue_time":799954,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 14:42:23.256 [info] {"args":{"id":25},"id":203134,"meta":{},"system_time":1767411743255739121,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 14:42:23.256 [debug] QUERY OK source="sources" db=0.4ms queue=0.1ms idle=662.6ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [25] 14:42:23.257 [debug] QUERY OK source="settings" db=0.3ms queue=0.1ms idle=662.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:42:23.258 [debug] QUERY OK source="media_profiles" db=0.3ms idle=655.8ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 14:42:23.259 [debug] QUERY OK source="settings" db=0.8ms idle=10.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:42:23.259 [debug] Fetching recent media IDs from YouTube API for playlist: UUWstkeBSSIEgw6n5qnlXXuA 14:42:23.260 [debug] QUERY OK source="settings" db=0.3ms idle=4.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:42:23.260 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 14:42:23.580 [debug] QUERY OK source="media_items" db=1.6ms queue=0.1ms idle=321.6ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND m0."media_id" IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [25, "_sYSZI--9TA", "T7P86y4vYKs", "qWpf9ysgE04", "81v7r86tRRE", "a3LYS6jzPKA", "o5UKHwwdhmA", "6CCxzLKCHYA", "VONzFNo8uW4", "jJUysp-6qBs", "3KzmAquL3e4", "5cgK_MdFz7s", "bHpsXfutTFY", "kVhFNQj86Ng", "nyd40ZDhRw4"] 14:42:23.583 [debug] QUERY OK source="media_items" db=1.0ms queue=0.1ms idle=324.4ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [25] 14:42:23.589 [debug] QUERY OK source="tasks" db=0.8ms idle=327.6ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [203158, 25, ~U[2026-01-03 03:42:23Z], ~U[2026-01-03 03:42:23Z]] 14:42:23.590 [info] {"args":{"id":25},"id":203134,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":333507,"event":"job:stop","queue_time":821779,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 14:42:24.260 [info] {"args":{"id":17},"id":203135,"meta":{},"system_time":1767411744259794417,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 14:42:24.261 [debug] QUERY OK source="sources" db=0.5ms queue=0.1ms idle=671.4ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [17] 14:42:24.262 [debug] QUERY OK source="settings" db=0.3ms queue=0.1ms idle=671.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:42:24.263 [debug] QUERY OK source="media_profiles" db=0.4ms queue=0.1ms idle=665.1ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 14:42:24.263 [debug] QUERY OK source="settings" db=0.3ms queue=0.1ms idle=11.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:42:24.264 [debug] Fetching recent media IDs from YouTube API for playlist: UUEIwxahdLz7bap-VDs9h35A 14:42:24.264 [debug] QUERY OK source="settings" db=0.2ms queue=0.1ms idle=4.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:42:24.265 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 14:42:24.608 [debug] QUERY OK source="media_items" db=3.3ms idle=343.1ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND m0."media_id" IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [17, "kuMUquaeE6g", "-NzfTE8RI4w", "2eiYALLYBFE", "J_vXK9uvRf4", "tRDxBwverlI", "ymlNErMdI2k", "hM1l19H0tX8", "qg01MgiVT9k", "a3l6FdpltbQ", "NtZaP8VMv0c", "ayicYezINas", "zoTuSOEOvPw", "U7NHNT3M-tw", "B_PCZiNlmPw", "5glksNTKkZI", "iDsb-pxE3fA", "7PJi9KSDVbQ", "CfhsW1kaa2Q", "pleHURTV6fU", "T47s4L1Wje4", "LLlghvxVoH0", "K4542wtX8B4", "rf-efIZI_Dg", "OXvdwc6NDqM", "nGEHUbTtpPY", "0FybegjTkgw", "3TgdCWBV0pg", "Qjd4CREfYbo", "pqnyUemUDF4", "6-FQSEVc_cs", "BvoDuNZ9gLA", "AjJfefo41M8", "dJSGJ1-9XWw", "Mcg9GcilBfU", "MQSwyrjTV2M", "o-dZKBwbsis", "matUCqoiSGk", "0_VdGzEk5-M", "PAOpkv0fpik", "VdwSMytC7y4", "tw5tQPm-B00", "vkD3-msLIHg", "INq7pAmaUuk", "mfTVxFapdLw", "kY2YeM5fNDw", "lkWRiks6luc", "yiCM_i8r4RM", "XzBMFsZT5gM", "dKN6XatdVkY", ...] 14:42:24.615 [debug] QUERY OK source="media_items" db=3.5ms idle=349.3ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [17] 14:42:24.618 [debug] QUERY OK source="tasks" db=0.4ms idle=353.2ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [203159, 17, ~U[2026-01-03 03:42:24Z], ~U[2026-01-03 03:42:24Z]] 14:42:24.619 [info] {"args":{"id":17},"id":203135,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":358929,"event":"job:stop","queue_time":704827,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 14:42:43.344 [info] {"source":"oban","duration":4136,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:42:52.214 [info] GET /sources/13/media/58783 14:42:52.214 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "58783", "source_id" => "13"} Pipelines: [:browser] 14:42:52.217 [debug] QUERY OK source="media_items" db=1.1ms queue=0.1ms idle=1431.5ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [58783] 14:42:52.219 [debug] QUERY OK source="tasks" db=1.0ms queue=0.1ms idle=866.1ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [58783] 14:42:52.219 [debug] QUERY OK source="sources" db=1.4ms idle=434.1ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [13] 14:42:52.221 [debug] QUERY OK source="oban_jobs" db=0.5ms idle=436.2ms SELECT o0."id", o0."state", o0."queue", o0."worker", o0."args", o0."meta", o0."tags", o0."errors", o0."attempt", o0."attempted_by", o0."max_attempts", o0."priority", o0."attempted_at", o0."cancelled_at", o0."completed_at", o0."discarded_at", o0."inserted_at", o0."scheduled_at", o0."id" FROM "oban_jobs" AS o0 WHERE (o0."id" = ?) [202078] 14:42:52.222 [debug] QUERY OK source="settings" db=0.5ms queue=0.1ms idle=437.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:42:52.223 [debug] QUERY OK source="settings" db=0.3ms idle=5.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:42:52.224 [debug] QUERY OK source="settings" db=0.4ms queue=0.1ms idle=4.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:42:52.226 [debug] QUERY OK source="media_profiles" db=0.3ms idle=6.3ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 14:42:52.250 [info] Sent 200 in 36ms 14:43:00.276 [info] {"source":"oban","duration":547,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 14:43:13.346 [info] {"source":"oban","duration":1816,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:43:43.351 [info] {"source":"oban","duration":3566,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:43:49.008 [info] GET /sources/17/media/35338 14:43:49.008 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "35338", "source_id" => "17"} Pipelines: [:browser] 14:43:49.010 [debug] QUERY OK source="media_items" db=0.5ms queue=0.2ms idle=1225.4ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [35338] 14:43:49.011 [debug] QUERY OK source="tasks" db=0.4ms queue=0.1ms idle=1226.9ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [35338] 14:43:49.012 [debug] QUERY OK source="sources" db=0.6ms idle=476.4ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [17] 14:43:49.013 [debug] QUERY OK source="settings" db=0.2ms idle=228.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:43:49.013 [debug] QUERY OK source="settings" db=0.2ms queue=0.1ms idle=229.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:43:49.015 [debug] QUERY OK source="settings" db=0.3ms queue=0.1ms idle=4.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:43:49.016 [debug] QUERY OK source="media_profiles" db=0.2ms idle=4.6ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 14:43:49.020 [info] Sent 200 in 11ms 14:43:51.552 [info] {"args":{"id":7},"id":203140,"meta":{},"system_time":1767411831551776443,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 14:43:51.553 [debug] QUERY OK source="sources" db=0.5ms queue=0.2ms idle=768.3ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [7] 14:43:51.554 [debug] QUERY OK source="settings" db=0.6ms queue=0.1ms idle=769.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:43:51.555 [debug] QUERY OK source="media_profiles" db=0.4ms idle=770.4ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 14:43:51.556 [debug] QUERY OK source="settings" db=0.4ms queue=0.1ms idle=11.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:43:51.556 [debug] Fetching recent media IDs from YouTube API for playlist: UUwnKziETDbHJtx78nIkfYug 14:43:51.557 [debug] QUERY OK source="settings" db=0.3ms queue=0.1ms idle=5.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:43:51.557 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 14:43:51.908 [debug] QUERY OK source="media_items" db=3.1ms idle=351.4ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND m0."media_id" IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [7, "mC5NdpSMDks", "ccV3u3D9ONE", "cVCDjEfPzII", "n0X2rqzKTgM", "dcuCvRNqmpY", "GG1qX8jHKGo", "k9wkleHFvo0", "CWoYVlMuUNQ", "xlfeieH4z38", "eZM2Ik-FHEU", "CtcTG8-qzbA", "6Mmj7mf1qlg", "InwVO9qBjqs", "1Hp-W2bpPrw", "VtE5sTpkn7k", "8dOJypt2F70", "Evm4t4prtWo", "taLzgvbrnv0", "rgCrnyf5JEI", "PHhc-48JT3U", "vFKjpNNjNGw", "VJQlOI70ubw", "E5cfNq0DO90", "DNBGSsZatbY", "pna1NyaHTls", "CUHao-vA98g", "cPN9BJe_RQw", "rCBt4XgCX-0", "f4g6KKGMmEI", "P_I5Jsc3xRw", "fPaU2l7RktM", "0PVwt01b6fs", "0qMDM4Y4Hwo", "Ld285PDsHvs", "p1mQC71wplA", "9k5JhKK6WlA", "WPxrifmtlQI", "nVNBmK7a1y8", "QDnMYztaxfI", "gxsaWhXG1Gg", "RMtkKiyrXic", "JKlJ6OW67Bk", "Sjmb8O-fRWI", "qZhD4G7ENSY", "OTWDzMjgsEY", "Y_eCu_pW6-4", "DplgNsjOPRg", "l6hHI3AVoYM", "joAhvj7dfsc", ...] 14:43:51.915 [debug] QUERY OK source="media_items" db=5.2ms idle=355.8ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [7] 14:43:51.919 [debug] QUERY OK source="tasks" db=0.3ms idle=361.4ms INSERT INTO "tasks" ("job_id","media_item_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [203160, 8350, ~U[2026-01-03 03:43:51Z], ~U[2026-01-03 03:43:51Z]] 14:43:51.922 [debug] QUERY OK source="tasks" db=0.5ms idle=4.2ms INSERT INTO "tasks" ("job_id","media_item_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [203161, 8380, ~U[2026-01-03 03:43:51Z], ~U[2026-01-03 03:43:51Z]] 14:43:51.927 [debug] QUERY OK source="tasks" db=0.4ms idle=4.5ms INSERT INTO "tasks" ("job_id","media_item_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [203162, 8401, ~U[2026-01-03 03:43:51Z], ~U[2026-01-03 03:43:51Z]] 14:43:51.928 [info] {"args":{"id":8350},"id":203160,"meta":{},"system_time":1767411831928266921,"max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 14:43:51.928 [info] {"args":{"id":8380},"id":203161,"meta":{},"system_time":1767411831928419764,"max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 14:43:51.931 [debug] QUERY OK source="media_items" db=2.9ms queue=0.1ms idle=3.2ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [8350] 14:43:51.931 [debug] QUERY OK source="media_items" db=2.9ms idle=2.4ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [8380] 14:43:51.932 [info] User scripts lifecyle file either not present or is empty. Skipping. 14:43:51.932 [info] User scripts lifecyle file either not present or is empty. Skipping. 14:43:51.933 [debug] QUERY OK source="sources" db=0.9ms queue=0.1ms idle=4.3ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [7] 14:43:51.933 [debug] QUERY OK source="sources" db=1.1ms idle=0.8ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [7] 14:43:51.934 [debug] QUERY OK source="media_profiles" db=1.1ms idle=1.5ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 14:43:51.935 [debug] QUERY OK source="media_profiles" db=1.6ms queue=0.1ms idle=1.2ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 14:43:51.936 [debug] QUERY OK source="tasks" db=2.7ms queue=0.1ms idle=1.6ms INSERT INTO "tasks" ("job_id","media_item_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [203163, 8418, ~U[2026-01-03 03:43:51Z], ~U[2026-01-03 03:43:51Z]] 14:43:51.939 [debug] QUERY OK source="media_items" db=2.6ms queue=0.6ms idle=2.1ms SELECT 1 FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) LIMIT 1 [8350] 14:43:51.939 [debug] QUERY OK source="media_items" db=2.7ms idle=2.5ms SELECT 1 FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) LIMIT 1 [8380] 14:43:51.941 [debug] QUERY OK source="media_metadata" db=0.4ms idle=4.3ms SELECT m0."id", m0."metadata_filepath", m0."thumbnail_filepath", m0."media_item_id", m0."inserted_at", m0."updated_at", m0."media_item_id" FROM "media_metadata" AS m0 WHERE (m0."media_item_id" = ?) [8380] 14:43:51.941 [debug] QUERY OK source="media_metadata" db=0.3ms idle=1.9ms SELECT m0."id", m0."metadata_filepath", m0."thumbnail_filepath", m0."media_item_id", m0."inserted_at", m0."updated_at", m0."media_item_id" FROM "media_metadata" AS m0 WHERE (m0."media_item_id" = ?) [8350] 14:43:51.941 [debug] QUERY OK source="tasks" db=0.9ms queue=0.1ms idle=1.7ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [203164, 7, ~U[2026-01-03 03:43:51Z], ~U[2026-01-03 03:43:51Z]] 14:43:51.942 [debug] QUERY OK source="media_profiles" db=0.4ms idle=2.0ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 14:43:51.942 [debug] QUERY OK source="media_profiles" db=0.6ms idle=1.2ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 14:43:51.942 [info] {"args":{"id":7},"id":203140,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":390261,"event":"job:stop","queue_time":407321,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 14:43:51.943 [debug] QUERY OK source="settings" db=0.4ms idle=1.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:43:51.943 [debug] QUERY OK source="settings" db=0.3ms idle=1.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:43:51.943 [debug] QUERY OK source="settings" db=0.3ms idle=1.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:43:51.944 [debug] QUERY OK source="settings" db=0.2ms idle=1.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:43:51.944 [debug] Running yt-dlp command for action: get_downloadable_status 14:43:51.945 [debug] Running yt-dlp command for action: get_downloadable_status 14:43:51.945 [debug] QUERY OK source="settings" db=0.2ms idle=2.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:43:51.945 [debug] QUERY OK source="settings" db=0.1ms idle=2.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:43:51.945 [debug] QUERY OK source="settings" db=0.2ms idle=2.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:43:51.946 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=bhkmFO8DikY --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/93/b1/93b1cd48f142da6999f3e4d1384fde999b7e64e82053aba7282843941d9d03e1.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:43:51.946 [debug] QUERY OK source="settings" db=0.1ms idle=2.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:43:51.946 [debug] QUERY OK source="settings" db=0.1ms idle=2.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:43:51.946 [debug] QUERY OK source="settings" db=0.1ms idle=1.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:43:51.947 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=aCES82xfgdw --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/bb/a7/bba734c89c58231dc23bb21449beea9cae0bf4ac7c46533ff7050f05d93eb9ab.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:43:57.212 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=aCES82xfgdw --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/bb/a7/bba734c89c58231dc23bb21449beea9cae0bf4ac7c46533ff7050f05d93eb9ab.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 1 with: ERROR: [youtube] aCES82xfgdw: Sign in to confirm your age. This video may be inappropriate for some users. Use --cookies-from-browser or --cookies for the authentication. See https://github.com/yt-dlp/yt-dlp/wiki/FAQ#how-do-i-pass-cookies-to-yt-dlp for how to manually pass cookies. Also see https://github.com/yt-dlp/yt-dlp/wiki/Extractors#exporting-youtube-cookies for tips on effectively exporting YouTube cookies 14:43:57.213 [debug] QUERY OK source="settings" db=0.5ms idle=1428.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:43:57.214 [debug] QUERY OK source="settings" db=0.3ms idle=1429.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:43:57.214 [debug] Running yt-dlp command for action: get_downloadable_status 14:43:57.216 [debug] QUERY OK source="settings" db=0.4ms idle=1432.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:43:57.217 [debug] QUERY OK source="settings" db=0.7ms idle=1432.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:43:57.218 [debug] QUERY OK source="settings" db=0.4ms idle=656.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:43:57.219 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=aCES82xfgdw --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/fe/ca/fecad6da25400ba66ac5d6d3ac2789a4c7c604451659541e87bd40ed79414ee8.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:43:57.317 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=bhkmFO8DikY --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/93/b1/93b1cd48f142da6999f3e4d1384fde999b7e64e82053aba7282843941d9d03e1.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 1 with: ERROR: [youtube] bhkmFO8DikY: Sign in to confirm your age. This video may be inappropriate for some users. Use --cookies-from-browser or --cookies for the authentication. See https://github.com/yt-dlp/yt-dlp/wiki/FAQ#how-do-i-pass-cookies-to-yt-dlp for how to manually pass cookies. Also see https://github.com/yt-dlp/yt-dlp/wiki/Extractors#exporting-youtube-cookies for tips on effectively exporting YouTube cookies 14:43:57.319 [debug] QUERY OK source="settings" db=0.6ms queue=0.1ms idle=105.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:43:57.320 [debug] QUERY OK source="settings" db=0.6ms queue=0.1ms idle=105.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:43:57.321 [debug] Running yt-dlp command for action: get_downloadable_status 14:43:57.324 [debug] QUERY OK source="settings" db=0.3ms idle=106.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:43:57.324 [debug] QUERY OK source="settings" db=0.3ms queue=0.1ms idle=106.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:43:57.325 [debug] QUERY OK source="settings" db=0.5ms queue=0.1ms idle=106.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:43:57.326 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=bhkmFO8DikY --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/04/48/0448613069ec50a89f969276e8341fedcc920d73f1ee8ec66e92a8b9fe7fa485.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:43:59.581 [info] {"args":{"id":24},"id":203141,"meta":{},"system_time":1767411839581568634,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 14:43:59.582 [debug] QUERY OK source="sources" db=0.8ms idle=798.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [24] 14:43:59.583 [debug] QUERY OK source="settings" db=0.4ms idle=799.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:43:59.584 [debug] QUERY OK source="media_profiles" db=0.6ms idle=799.9ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 14:43:59.585 [debug] QUERY OK source="settings" db=0.4ms idle=11.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:43:59.585 [debug] Fetching recent media IDs from YouTube API for playlist: UUNTjSZfAK117b2kFGNCJfdA 14:43:59.585 [debug] QUERY OK source="settings" db=0.3ms idle=4.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:43:59.586 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 14:43:59.943 [debug] QUERY OK source="media_items" db=4.9ms idle=355.9ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND m0."media_id" IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [24, "2J48c2sukbo", "zq9gpqgWFv8", "EWdphas_OP4", "-U2sQ3e3R-0", "XdytKwHuG_8", "t-hori2Io14", "Xbemvi42Ngs", "91m4MQw_sZI", "GfUIbPqAMQs", "4VpVt3zdvL8", "q6Kd5C7O-F8", "EV6DSqTOXM0", "mMvfBUNNKIY", "C215grXAMCk", "_x6TE7hbE1k", "vycMxLco0a0", "lJWhisaNv8E", "4Blxc8mVzQs", "ztqcWc5aaks", "0Dvn039qD8I", "Vx69evZOEAE", "4dzZ44-xVds", "Rews5WNxiNk", "f-BFFWzh9uE", "RfJSMWHO0tY", "gMeUOURvDP8", "LEiL1np9sSM", "F-QeDtQ8Gy4", "9FSIF281OAo", "Shav52BfzWk", "dsCfQ3y5tHQ", "0rpt5sMb7cw", "Fe7Y152ak3Y", "HEuablkqrCg", "BRUTYHBJ_Z4", "gpaV4bgEG-g", "ppjFdEbIS4g", "lEhEMRA17bg", "tpIXmmV4ib4", "LBYQ_NLVKCw", "JsdM3k3QiPc", "TNmSVjGyZx0", "OMVYZziNjhc", "uyfyFRvng3c", "YFBg5NNEW4g", "IkZe4pXDv0k", "ZT0in30U-ug", "kqDqSLOuxmM", "ZgLsNSWN46o", ...] 14:43:59.947 [debug] QUERY OK source="media_items" db=1.7ms idle=362.2ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [24] 14:43:59.951 [debug] QUERY OK source="tasks" db=0.8ms idle=364.9ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [203165, 24, ~U[2026-01-03 03:43:59Z], ~U[2026-01-03 03:43:59Z]] 14:43:59.952 [info] {"args":{"id":24},"id":203141,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":370312,"event":"job:stop","queue_time":420462,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 14:44:00.279 [info] {"source":"oban","duration":753,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 14:44:02.638 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=aCES82xfgdw --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/fe/ca/fecad6da25400ba66ac5d6d3ac2789a4c7c604451659541e87bd40ed79414ee8.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 1 with: ERROR: [youtube] aCES82xfgdw: Sign in to confirm your age. This video may be inappropriate for some users. Use --cookies-from-browser or --cookies for the authentication. See https://github.com/yt-dlp/yt-dlp/wiki/FAQ#how-do-i-pass-cookies-to-yt-dlp for how to manually pass cookies. Also see https://github.com/yt-dlp/yt-dlp/wiki/Extractors#exporting-youtube-cookies for tips on effectively exporting YouTube cookies 14:44:02.639 [error] yt-dlp download error for media item #8350: "ERROR: [youtube] aCES82xfgdw: Sign in to confirm your age. This video may be inappropriate for some users. Use --cookies-from-browser or --cookies for the authentication. See https://github.com/yt-dlp/yt-dlp/wiki/FAQ#how-do-i-pass-cookies-to-yt-dlp for how to manually pass cookies. Also see https://github.com/yt-dlp/yt-dlp/wiki/Extractors#exporting-youtube-cookies for tips on effectively exporting YouTube cookies\n" 14:44:02.639 [error] yt-dlp download will not be retried: "ERROR: [youtube] aCES82xfgdw: Sign in to confirm your age. This video may be inappropriate for some users. Use --cookies-from-browser or --cookies for the authentication. See https://github.com/yt-dlp/yt-dlp/wiki/FAQ#how-do-i-pass-cookies-to-yt-dlp for how to manually pass cookies. Also see https://github.com/yt-dlp/yt-dlp/wiki/Extractors#exporting-youtube-cookies for tips on effectively exporting YouTube cookies\n" 14:44:02.640 [info] {"args":{"id":8350},"id":203160,"meta":{},"state":"success","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":10711567,"event":"job:stop","queue_time":924746,"attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 14:44:02.648 [info] {"args":{"id":8401},"id":203162,"meta":{},"system_time":1767411842648130869,"max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 14:44:02.649 [debug] QUERY OK source="media_items" db=0.3ms queue=0.1ms idle=864.5ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [8401] 14:44:02.649 [info] User scripts lifecyle file either not present or is empty. Skipping. 14:44:02.650 [debug] QUERY OK source="sources" db=0.2ms queue=0.1ms idle=865.5ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [7] 14:44:02.650 [debug] QUERY OK source="media_profiles" db=0.3ms idle=65.9ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 14:44:02.651 [debug] QUERY OK source="media_items" db=0.3ms idle=10.6ms SELECT 1 FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) LIMIT 1 [8401] 14:44:02.652 [debug] QUERY OK source="media_metadata" db=0.1ms idle=4.6ms SELECT m0."id", m0."metadata_filepath", m0."thumbnail_filepath", m0."media_item_id", m0."inserted_at", m0."updated_at", m0."media_item_id" FROM "media_metadata" AS m0 WHERE (m0."media_item_id" = ?) [8401] 14:44:02.653 [debug] QUERY OK source="media_profiles" db=0.1ms idle=3.9ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 14:44:02.654 [debug] QUERY OK source="settings" db=0.1ms idle=3.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:44:02.654 [debug] QUERY OK source="settings" db=0.2ms idle=3.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:44:02.655 [debug] Running yt-dlp command for action: get_downloadable_status 14:44:02.657 [debug] QUERY OK source="settings" db=0.5ms idle=5.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:44:02.658 [debug] QUERY OK source="settings" db=0.4ms idle=4.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:44:02.658 [debug] QUERY OK source="settings" db=0.5ms idle=4.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:44:02.659 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=ZWSj0M132e8 --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/01/0a/010a14ae9f13ca332931fc0aace48fb906683deb30a55de022379c5b74292f1f.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:44:02.714 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=bhkmFO8DikY --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/04/48/0448613069ec50a89f969276e8341fedcc920d73f1ee8ec66e92a8b9fe7fa485.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 1 with: ERROR: [youtube] bhkmFO8DikY: Sign in to confirm your age. This video may be inappropriate for some users. Use --cookies-from-browser or --cookies for the authentication. See https://github.com/yt-dlp/yt-dlp/wiki/FAQ#how-do-i-pass-cookies-to-yt-dlp for how to manually pass cookies. Also see https://github.com/yt-dlp/yt-dlp/wiki/Extractors#exporting-youtube-cookies for tips on effectively exporting YouTube cookies 14:44:02.714 [error] yt-dlp download error for media item #8380: "ERROR: [youtube] bhkmFO8DikY: Sign in to confirm your age. This video may be inappropriate for some users. Use --cookies-from-browser or --cookies for the authentication. See https://github.com/yt-dlp/yt-dlp/wiki/FAQ#how-do-i-pass-cookies-to-yt-dlp for how to manually pass cookies. Also see https://github.com/yt-dlp/yt-dlp/wiki/Extractors#exporting-youtube-cookies for tips on effectively exporting YouTube cookies\n" 14:44:02.715 [error] yt-dlp download will not be retried: "ERROR: [youtube] bhkmFO8DikY: Sign in to confirm your age. This video may be inappropriate for some users. Use --cookies-from-browser or --cookies for the authentication. See https://github.com/yt-dlp/yt-dlp/wiki/FAQ#how-do-i-pass-cookies-to-yt-dlp for how to manually pass cookies. Also see https://github.com/yt-dlp/yt-dlp/wiki/Extractors#exporting-youtube-cookies for tips on effectively exporting YouTube cookies\n" 14:44:02.716 [info] {"args":{"id":8380},"id":203161,"meta":{},"state":"success","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":10786913,"event":"job:stop","queue_time":924746,"attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 14:44:02.726 [info] {"args":{"id":8418},"id":203163,"meta":{},"system_time":1767411842726095300,"max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 14:44:02.727 [debug] QUERY OK source="media_items" db=0.8ms idle=68.9ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [8418] 14:44:02.727 [info] User scripts lifecyle file either not present or is empty. Skipping. 14:44:02.729 [debug] QUERY OK source="sources" db=0.9ms queue=0.1ms idle=69.8ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [7] 14:44:02.730 [debug] QUERY OK source="media_profiles" db=0.8ms idle=70.4ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 14:44:02.732 [debug] QUERY OK source="media_items" db=1.2ms idle=13.8ms SELECT 1 FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) LIMIT 1 [8418] 14:44:02.734 [debug] QUERY OK source="media_metadata" db=0.3ms idle=7.6ms SELECT m0."id", m0."metadata_filepath", m0."thumbnail_filepath", m0."media_item_id", m0."inserted_at", m0."updated_at", m0."media_item_id" FROM "media_metadata" AS m0 WHERE (m0."media_item_id" = ?) [8418] 14:44:02.734 [debug] QUERY OK source="media_profiles" db=0.5ms idle=6.8ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 14:44:02.735 [debug] QUERY OK source="settings" db=0.3ms idle=6.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:44:02.736 [debug] QUERY OK source="settings" db=0.3ms idle=5.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:44:02.736 [debug] Running yt-dlp command for action: get_downloadable_status 14:44:02.739 [debug] QUERY OK source="settings" db=0.6ms idle=6.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:44:02.739 [debug] QUERY OK source="settings" db=0.4ms idle=5.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:44:02.740 [debug] QUERY OK source="settings" db=0.4ms idle=5.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:44:02.740 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=v6jHhzj08yQ --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/13/de/13de520c71cb10ab5c814353fc6774be0f21d893cfc3f3b112cfcc36f922a80f.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:44:08.119 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=ZWSj0M132e8 --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/01/0a/010a14ae9f13ca332931fc0aace48fb906683deb30a55de022379c5b74292f1f.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 1 with: ERROR: [youtube] ZWSj0M132e8: Sign in to confirm your age. This video may be inappropriate for some users. Use --cookies-from-browser or --cookies for the authentication. See https://github.com/yt-dlp/yt-dlp/wiki/FAQ#how-do-i-pass-cookies-to-yt-dlp for how to manually pass cookies. Also see https://github.com/yt-dlp/yt-dlp/wiki/Extractors#exporting-youtube-cookies for tips on effectively exporting YouTube cookies 14:44:08.121 [debug] QUERY OK source="settings" db=0.7ms idle=1336.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:44:08.122 [debug] QUERY OK source="settings" db=0.5ms idle=517.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:44:08.123 [debug] Running yt-dlp command for action: get_downloadable_status 14:44:08.125 [debug] QUERY OK source="settings" db=0.4ms idle=340.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:44:08.125 [debug] QUERY OK source="settings" db=0.3ms idle=341.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:44:08.126 [debug] QUERY OK source="settings" db=0.4ms idle=341.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:44:08.126 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=ZWSj0M132e8 --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/7c/67/7c67a1438e6d9cc41069576ddd8de2c9851f36e3778294bcdc345653a688080a.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:44:08.175 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=v6jHhzj08yQ --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/13/de/13de520c71cb10ab5c814353fc6774be0f21d893cfc3f3b112cfcc36f922a80f.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 1 with: ERROR: [youtube] v6jHhzj08yQ: Sign in to confirm your age. This video may be inappropriate for some users. Use --cookies-from-browser or --cookies for the authentication. See https://github.com/yt-dlp/yt-dlp/wiki/FAQ#how-do-i-pass-cookies-to-yt-dlp for how to manually pass cookies. Also see https://github.com/yt-dlp/yt-dlp/wiki/Extractors#exporting-youtube-cookies for tips on effectively exporting YouTube cookies 14:44:08.176 [debug] QUERY OK source="settings" db=0.3ms idle=54.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:44:08.176 [debug] QUERY OK source="settings" db=0.2ms idle=54.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:44:08.178 [debug] Running yt-dlp command for action: get_downloadable_status 14:44:08.180 [debug] QUERY OK source="settings" db=0.2ms queue=0.1ms idle=54.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:44:08.181 [debug] QUERY OK source="settings" db=0.2ms idle=54.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:44:08.181 [debug] QUERY OK source="settings" db=0.2ms queue=0.1ms idle=54.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:44:08.182 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=v6jHhzj08yQ --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/d4/30/d430ede8855a1de9ea9a59fdbc2dcbf38a52d4b4896f6908045c96a951bdd9de.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:44:13.355 [info] {"source":"oban","duration":3571,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:44:13.557 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=v6jHhzj08yQ --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/d4/30/d430ede8855a1de9ea9a59fdbc2dcbf38a52d4b4896f6908045c96a951bdd9de.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 1 with: ERROR: [youtube] v6jHhzj08yQ: Sign in to confirm your age. This video may be inappropriate for some users. Use --cookies-from-browser or --cookies for the authentication. See https://github.com/yt-dlp/yt-dlp/wiki/FAQ#how-do-i-pass-cookies-to-yt-dlp for how to manually pass cookies. Also see https://github.com/yt-dlp/yt-dlp/wiki/Extractors#exporting-youtube-cookies for tips on effectively exporting YouTube cookies 14:44:13.558 [error] yt-dlp download error for media item #8418: "ERROR: [youtube] v6jHhzj08yQ: Sign in to confirm your age. This video may be inappropriate for some users. Use --cookies-from-browser or --cookies for the authentication. See https://github.com/yt-dlp/yt-dlp/wiki/FAQ#how-do-i-pass-cookies-to-yt-dlp for how to manually pass cookies. Also see https://github.com/yt-dlp/yt-dlp/wiki/Extractors#exporting-youtube-cookies for tips on effectively exporting YouTube cookies\n" 14:44:13.558 [error] yt-dlp download will not be retried: "ERROR: [youtube] v6jHhzj08yQ: Sign in to confirm your age. This video may be inappropriate for some users. Use --cookies-from-browser or --cookies for the authentication. See https://github.com/yt-dlp/yt-dlp/wiki/FAQ#how-do-i-pass-cookies-to-yt-dlp for how to manually pass cookies. Also see https://github.com/yt-dlp/yt-dlp/wiki/Extractors#exporting-youtube-cookies for tips on effectively exporting YouTube cookies\n" 14:44:13.560 [info] {"args":{"id":8418},"id":203163,"meta":{},"state":"success","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":10832711,"event":"job:stop","queue_time":11722799,"attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 14:44:13.852 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=ZWSj0M132e8 --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/7c/67/7c67a1438e6d9cc41069576ddd8de2c9851f36e3778294bcdc345653a688080a.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 1 with: ERROR: [youtube] ZWSj0M132e8: Sign in to confirm your age. This video may be inappropriate for some users. Use --cookies-from-browser or --cookies for the authentication. See https://github.com/yt-dlp/yt-dlp/wiki/FAQ#how-do-i-pass-cookies-to-yt-dlp for how to manually pass cookies. Also see https://github.com/yt-dlp/yt-dlp/wiki/Extractors#exporting-youtube-cookies for tips on effectively exporting YouTube cookies 14:44:13.852 [error] yt-dlp download error for media item #8401: "ERROR: [youtube] ZWSj0M132e8: Sign in to confirm your age. This video may be inappropriate for some users. Use --cookies-from-browser or --cookies for the authentication. See https://github.com/yt-dlp/yt-dlp/wiki/FAQ#how-do-i-pass-cookies-to-yt-dlp for how to manually pass cookies. Also see https://github.com/yt-dlp/yt-dlp/wiki/Extractors#exporting-youtube-cookies for tips on effectively exporting YouTube cookies\n" 14:44:13.853 [error] yt-dlp download will not be retried: "ERROR: [youtube] ZWSj0M132e8: Sign in to confirm your age. This video may be inappropriate for some users. Use --cookies-from-browser or --cookies for the authentication. See https://github.com/yt-dlp/yt-dlp/wiki/FAQ#how-do-i-pass-cookies-to-yt-dlp for how to manually pass cookies. Also see https://github.com/yt-dlp/yt-dlp/wiki/Extractors#exporting-youtube-cookies for tips on effectively exporting YouTube cookies\n" 14:44:13.854 [info] {"args":{"id":8401},"id":203162,"meta":{},"state":"success","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":11205136,"event":"job:stop","queue_time":11646728,"attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 14:44:39.549 [info] GET /sources/13/media/12726 14:44:39.549 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "12726", "source_id" => "13"} Pipelines: [:browser] 14:44:39.552 [debug] QUERY OK source="media_items" db=1.0ms queue=0.5ms idle=1766.2ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [12726] 14:44:39.553 [debug] QUERY OK source="tasks" db=0.5ms queue=0.2ms idle=1768.7ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [12726] 14:44:39.554 [debug] QUERY OK source="sources" db=0.9ms idle=1769.1ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [13] 14:44:39.555 [debug] QUERY OK source="oban_jobs" db=0.3ms idle=849.1ms SELECT o0."id", o0."state", o0."queue", o0."worker", o0."args", o0."meta", o0."tags", o0."errors", o0."attempt", o0."attempted_by", o0."max_attempts", o0."priority", o0."attempted_at", o0."cancelled_at", o0."completed_at", o0."discarded_at", o0."inserted_at", o0."scheduled_at", o0."id" FROM "oban_jobs" AS o0 WHERE (o0."id" = ?) [187551] 14:44:39.557 [debug] QUERY OK source="settings" db=0.2ms idle=772.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:44:39.557 [debug] QUERY OK source="settings" db=0.2ms queue=0.1ms idle=5.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:44:39.558 [debug] QUERY OK source="settings" db=0.2ms idle=4.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:44:39.560 [debug] QUERY OK source="media_profiles" db=0.2ms idle=5.5ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 14:44:39.564 [info] Sent 200 in 15ms 14:44:43.358 [info] {"source":"oban","duration":1979,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:44:49.746 [info] {"args":{"id":3},"id":203142,"meta":{},"system_time":1767411889746641331,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 14:44:49.747 [debug] QUERY OK source="sources" db=0.3ms idle=962.8ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [3] 14:44:49.748 [debug] QUERY OK source="settings" db=0.2ms idle=963.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:44:49.748 [debug] QUERY OK source="media_profiles" db=0.3ms idle=963.9ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 14:44:49.749 [debug] QUERY OK source="settings" db=0.2ms idle=9.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:44:49.749 [debug] Fetching recent media IDs from YouTube API for playlist: UUISrVZmDM4x-Rq9mmNUw7Zw 14:44:49.749 [debug] QUERY OK source="settings" db=0.2ms idle=2.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:44:49.749 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 14:44:50.194 [debug] QUERY OK source="media_items" db=2.7ms idle=443.9ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND m0."media_id" IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [3, "MQ2cHq3-J7A", "CtF5dLHITYA", "SGJkxRdkRGg", "OUCt85aJaAA", "9gARPYZOka4", "-uH-Gi5tjEw", "qwUBBQKYX94", "s8VLDSQJ8nA", "EvPfr0lKkh4", "msXzAxF49gA", "hQCWaSvjkU0", "RcmjVsy3a-g", "xtuNc9vYJG4", "fj2tcg8OzsM", "2FZ4IfPACDM", "2Q9DzW20YJ8", "IVsWFGOE_mw", "vPxpMcv2Z4Y", "Zverj_ldlhY", "pQK8xasPd9Q", "_Yo7nh8u9pk", "4HzltsOvc0A", "a8UBLMm71JY", "3vqbr7-6Twk", "Df0iVjAKJZw", "n-X-AJpHUyI", "4CV7jI0e0Hw", "nqPoocCKci8", "5IIOdWnJGxg", "jkPL8BaM4ko", "CzeQtnRmUZ0", "9u-0d2IVZ3I", "igtvNmqsKM0", "47XDpW4nOzk", "8xvd7xSLQOo", "PnQPZMN0kIY", "feDph2WgRfI", "Z5FZ2XfX4Uc", "e0DxPopyrqM", "YvaK-Tjp2ck", "6_CctUPWX4I", "_DzHKw8yK58", "VnAkeiehyCg", "EFW1iCguDV8", "CEj7B1VzUwU", "3cy5fWUssjQ", "ZnjoTYmqLhs", "5IxtizzvaWw", "ZnBsMRl-EL0", ...] 14:44:50.200 [debug] QUERY OK source="media_items" db=3.5ms idle=448.4ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [3] 14:44:50.203 [debug] QUERY OK source="tasks" db=0.5ms idle=453.0ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [203166, 3, ~U[2026-01-03 03:44:50Z], ~U[2026-01-03 03:44:50Z]] 14:44:50.204 [info] {"args":{"id":3},"id":203142,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":456873,"event":"job:stop","queue_time":434978,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 14:44:55.759 [info] {"args":{"id":1},"id":203143,"meta":{},"system_time":1767411895759201136,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 14:44:55.760 [debug] QUERY OK source="sources" db=0.4ms idle=1975.5ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 14:44:55.760 [debug] QUERY OK source="settings" db=0.1ms idle=1976.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:44:55.760 [debug] QUERY OK source="media_profiles" db=0.2ms idle=1011.4ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 14:44:55.761 [debug] QUERY OK source="settings" db=0.2ms idle=9.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:44:55.761 [debug] Fetching recent media IDs from YouTube API for playlist: UU54SLBnD5k5U3Q6N__UjbAw 14:44:55.761 [debug] QUERY OK source="settings" db=0.1ms idle=2.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:44:55.761 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 14:44:56.156 [debug] QUERY OK source="media_items" db=3.1ms idle=393.4ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND m0."media_id" IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [1, "UYCKIroDVBY", "ynOiaE9f6NY", "At_WjGosTNM", "_s7ZzdPoVZE", "ulhKFEKXIEI", "YpQ2jupcrHk", "PetMnG6cCDw", "VdxlXCnA1DM", "uj2s7HZQigU", "rZ7Y_gPAHig", "LTmK8Ab6IFE", "sZKNVGI8xt0", "_PUZIf6VQto", "J2-1ZErtS7A", "OEyptSEM5Tw", "HLeY2_hJvRk", "DkZ5uXcDxjc", "zPWe_aBuNfM", "PZN18led4ok", "66F09ebI9gw", "Pfok4B_xyaI", "e5HEGCCadBU", "hYFsHfPquPg", "nKsnfEB29ek", "OpDh_O473Ms", "ZTtZ12XtQpg", "TphXloX3PEI", "4Qhp4VPP2Wo", "J5l7jvbp3u8", "uL_YQMkkbUg", "SAZ17l0EwxI", "fTa_T2pVwuk", "6HpTVfX0SvI", "XlIWsRyXL8U", "nM1GQNJU6LQ", "WVN1LNy1zgo", "0Fxf6_q7qHc", "dL0KPsy-Dww", "G43wJ7YyWzM", "yVy89TnL9Zg", "BR1VRJDu-gc", "-2HeoqiMC6s", "7WXyx51z5G8", "jCk-9S8PQyc", "vGEIHv1XelY", "rOI7HYGGHpo", "gNeGHhU6UaI", "gUlkwSHOT7Q", "tpf7TxliCxA", ...] 14:44:56.164 [debug] QUERY OK source="media_items" db=2.9ms queue=0.1ms idle=401.2ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [1] 14:44:56.169 [debug] QUERY OK source="tasks" db=1.1ms idle=406.9ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [203167, 1, ~U[2026-01-03 03:44:56Z], ~U[2026-01-03 03:44:56Z]] 14:44:56.171 [info] {"args":{"id":1},"id":203143,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":410625,"event":"job:stop","queue_time":491870,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 14:45:00.280 [info] {"source":"oban","duration":687,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 14:45:13.362 [info] {"source":"oban","duration":3048,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:45:15.831 [info] {"args":{"id":22},"id":203144,"meta":{},"system_time":1767411915831115932,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 14:45:15.832 [debug] QUERY OK source="sources" db=0.7ms idle=1012.9ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [22] 14:45:15.833 [debug] QUERY OK source="settings" db=1.2ms queue=0.1ms idle=48.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:45:15.835 [debug] QUERY OK source="media_profiles" db=0.8ms queue=0.1ms idle=50.1ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 14:45:15.836 [debug] QUERY OK source="settings" db=0.5ms idle=11.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:45:15.836 [debug] Fetching recent media IDs from YouTube API for playlist: UUP1RHyOhO98Yn2rMbDBirxA 14:45:15.837 [debug] QUERY OK source="settings" db=0.6ms idle=5.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:45:15.837 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 14:45:16.159 [debug] QUERY OK source="media_items" db=2.9ms idle=323.9ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND m0."media_id" IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [22, "N5RzDzO54gQ", "5glegyagphQ", "VtiV_RfFqNM", "qNYyH7bMcbI", "MPdiQsg_zQ8", "4-VOc2Aich8", "gMrBK9rp6As", "p0lqYk8_uMI", "aKpQHxUiwxc", "KsuhL0zVo3I", "pCJcoGDsbxc", "_5AR-GKeqlk", "VcJG7rIOjb0", "vRzAE_0VnXQ", "uj_bcWLWMtw", "xRyiudwo_jM", "pTMRT4CRUoM", "W8_LEBSOsPg", "YZuP7d99kCw"] 14:45:16.161 [debug] QUERY OK source="settings" db=0.7ms idle=326.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:45:16.162 [debug] QUERY OK source="settings" db=0.6ms idle=326.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:45:16.162 [debug] Running yt-dlp command for action: get_media_attributes 14:45:16.166 [debug] QUERY OK source="settings" db=0.3ms idle=329.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:45:16.166 [debug] QUERY OK source="settings" db=0.3ms queue=0.1ms idle=329.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:45:16.167 [debug] QUERY OK source="settings" db=0.3ms queue=0.1ms idle=7.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:45:16.168 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=gMrBK9rp6As --simulate --skip-download --output /downloads/White Raven/Season %(upload_date>%Y)S/s%(upload_date>%Y)Se%(upload_date>%m%d)S00 - %(title)S.%(ext)S --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --print-to-file %(.{id,title,live_status,original_url,description,aspect_ratio,duration,upload_date,timestamp,playlist_index,filename})j /tmp/pinchflat/data/01/82/01829c5298d22283425bdaecc82fda562e19331b81fae8a2c937846df3be163c.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:45:16.834 [info] {"args":{"id":2},"id":203145,"meta":{},"system_time":1767411916834539914,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 14:45:16.835 [debug] QUERY OK source="sources" db=0.5ms idle=668.8ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [2] 14:45:16.836 [debug] QUERY OK source="settings" db=0.5ms idle=669.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:45:16.838 [debug] QUERY OK source="media_profiles" db=1.2ms idle=669.2ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 14:45:16.838 [debug] QUERY OK source="settings" db=0.5ms idle=10.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:45:16.839 [debug] Fetching recent media IDs from YouTube API for playlist: UUeE3lj6pLX_gCd0Yvns517Q 14:45:16.839 [debug] QUERY OK source="settings" db=0.2ms idle=4.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:45:16.839 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 14:45:17.409 [debug] QUERY OK source="media_items" db=3.1ms idle=569.8ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND m0."media_id" IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [2, "0k6I__61QDc", "tAnxIOSrasI", "qGmURDZnDhc", "vBsPoGzQPxA", "TiJoEoREmdE", "C-CkKUyzQhA", "K1UWf6n1FmY", "9VKS1P-aXSc", "kt_SNpPa2w4", "oaXa30IfZMc", "pUBcfLBwPXw", "WkG24B0xw1E", "fBQxlA3KI5U", "HbeqOllBS9o", "li1fOq_qqHM", "rsqGEZeczYw", "d7HFMZOp0S4", "oipxUVJUZrc", "cTxE_oPyD9Q", "yJlKrUX8Bvk", "pYtoIdfLeHA", "qPMGKmyQ1AA", "7W651YDFjhc", "EfUXdMBXauI", "804ky1qeBuE", "DRMng-9g9Ng", "Nzp4LPVF_7M", "1psbOjlzkyA", "IwMM9c9Q0Pw", "xhbzG8V0eSA", "-CSyf5_q-XQ", "C__g4XPdYRY", "7-FRyPsqWG0", "0-fliBPsvZI", "xLZYbjMl3hY", "qs36351JQys", "-aty2xx6kTI", "Ty7NA3HvUsk", "w6xdmHLxzSM", "-5YmR5lvMlQ", "fFbRmFdCoYc", "XkPAB-oXAoU", "rTecGGMrRKc", "tHjU0F1najQ", "Z6otzigVvWM", "9m36Ncgctbg", "B1KUJbbpoK0", "rqGLjKlA_tM", "PZDZuoa3kJE", ...] 14:45:17.420 [debug] QUERY OK source="media_items" db=6.7ms idle=576.5ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [2] 14:45:17.423 [debug] QUERY OK source="tasks" db=0.3ms queue=0.1ms idle=583.1ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [203168, 2, ~U[2026-01-03 03:45:17Z], ~U[2026-01-03 03:45:17Z]] 14:45:17.423 [info] {"args":{"id":2},"id":203145,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":588812,"event":"job:stop","queue_time":501947,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 14:45:20.764 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=gMrBK9rp6As --simulate --skip-download --output /downloads/White Raven/Season %(upload_date>%Y)S/s%(upload_date>%Y)Se%(upload_date>%m%d)S00 - %(title)S.%(ext)S --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --print-to-file %(.{id,title,live_status,original_url,description,aspect_ratio,duration,upload_date,timestamp,playlist_index,filename})j /tmp/pinchflat/data/01/82/01829c5298d22283425bdaecc82fda562e19331b81fae8a2c937846df3be163c.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 1 with: ERROR: [youtube] gMrBK9rp6As: Offline. 14:45:20.764 [error] Error creating media item 'gMrBK9rp6As' from URL: {:error, "ERROR: [youtube] gMrBK9rp6As: Offline.\n", 1} 14:45:20.765 [debug] QUERY OK source="media_items" db=1.0ms idle=1980.5ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [22] 14:45:20.768 [debug] QUERY OK source="tasks" db=0.6ms idle=1936.6ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [203169, 22, ~U[2026-01-03 03:45:20Z], ~U[2026-01-03 03:45:20Z]] 14:45:20.769 [info] {"args":{"id":22},"id":203144,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":4937866,"event":"job:stop","queue_time":907476,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 14:45:25.450 [info] GET /sources/23/media/21389 14:45:25.450 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "21389", "source_id" => "23"} Pipelines: [:browser] 14:45:25.451 [debug] QUERY OK source="media_items" db=0.4ms idle=1667.2ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [21389] 14:45:25.452 [debug] QUERY OK source="tasks" db=0.5ms idle=1668.1ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [21389] 14:45:25.453 [debug] QUERY OK source="sources" db=0.9ms idle=1668.1ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [23] 14:45:25.454 [debug] QUERY OK source="settings" db=0.4ms idle=1607.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:45:25.454 [debug] QUERY OK source="settings" db=0.3ms idle=604.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:45:25.455 [debug] QUERY OK source="settings" db=0.4ms idle=3.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:45:25.457 [debug] QUERY OK source="media_profiles" db=0.4ms idle=3.9ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 14:45:25.513 [info] Sent 200 in 62ms 14:45:43.368 [info] {"source":"oban","duration":4683,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:46:00.282 [info] {"source":"oban","duration":606,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 14:46:04.908 [info] GET /sources/23/media/21390/force_download 14:46:04.909 [debug] QUERY OK source="settings" db=0.9ms idle=1124.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:46:04.910 [debug] QUERY OK source="settings" db=0.6ms queue=0.1ms idle=952.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:46:04.910 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 14:46:04.911 [error] #PID<0.11471.0> running PinchflatWeb.Endpoint (connection #PID<0.11470.0>, stream id 1) terminated Server: pinchflat.uiau7e.uncld.dev:80 (http) Request: GET /sources/23/media/21390/force_download ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/23/media/21390/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.11470.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/23/media/21390/force_download", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 36380}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYclNjVUxKNHZsRHFnYVJYN2Y4XzRlaUFR.KFYlv3_J7_xoJ6K2Z-SY5IsK-iPwmTocdkzUgVZjgqI", "from" => "gptbot(at)openai.com", "host" => "pinchflat.uiau7e.uncld.dev", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.3; +https://openai.com/gptbot)", "via" => "2.0 Caddy", "x-forwarded-for" => "74.7.227.183", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https", "x-openai-host-hash" => "454925582" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{ "_pinchflat_key" => "SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYclNjVUxKNHZsRHFnYVJYN2Y4XzRlaUFR.KFYlv3_J7_xoJ6K2Z-SY5IsK-iPwmTocdkzUgVZjgqI" }, halted: false, host: "pinchflat.uiau7e.uncld.dev", method: "GET", owner: #PID<0.11471.0>, params: %{}, path_info: ["sources", "23", "media", "21390", "force_download"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.uiau7e.uncld.dev", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {10, 210, 0, 2}, req_cookies: %{ "_pinchflat_key" => "SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYclNjVUxKNHZsRHFnYVJYN2Y4XzRlaUFR.KFYlv3_J7_xoJ6K2Z-SY5IsK-iPwmTocdkzUgVZjgqI" }, req_headers: [ {"accept", "*/*"}, {"accept-encoding", "gzip, br, deflate"}, {"cookie", "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYclNjVUxKNHZsRHFnYVJYN2Y4XzRlaUFR.KFYlv3_J7_xoJ6K2Z-SY5IsK-iPwmTocdkzUgVZjgqI"}, {"from", "gptbot(at)openai.com"}, {"host", "pinchflat.uiau7e.uncld.dev"}, {"user-agent", "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.3; +https://openai.com/gptbot)"}, {"via", "2.0 Caddy"}, {"x-forwarded-for", "74.7.227.183"}, {"x-forwarded-host", "pinchflat.uiau7e.uncld.dev"}, {"x-forwarded-proto", "https"}, {"x-openai-host-hash", "454925582"} ], request_path: "/sources/23/media/21390/force_download", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GIcb0WQfHSLxpvAAAjCB"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.11470.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/23/media/21390/force_download", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 36380}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYclNjVUxKNHZsRHFnYVJYN2Y4XzRlaUFR.KFYlv3_J7_xoJ6K2Z-SY5IsK-iPwmTocdkzUgVZjgqI", "from" => "gptbot(at)openai.com", "host" => "pinchflat.uiau7e.uncld.dev", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.3; +https://openai.com/gptbot)", "via" => "2.0 Caddy", "x-forwarded-for" => "74.7.227.183", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https", "x-openai-host-hash" => "454925582" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/23/media/21390/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.11470.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/23/media/21390/force_download", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 36380}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYclNjVUxKNHZsRHFnYVJYN2Y4XzRlaUFR.KFYlv3_J7_xoJ6K2Z-SY5IsK-iPwmTocdkzUgVZjgqI", "from" => "gptbot(at)openai.com", "host" => "pinchflat.uiau7e.uncld.dev", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.3; +https://openai.com/gptbot)", "via" => "2.0 Caddy", "x-forwarded-for" => "74.7.227.183", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https", "x-openai-host-hash" => "454925582" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{ " (truncated) 14:46:12.993 [info] {"args":{"id":26},"id":203146,"meta":{},"system_time":1767411972993453641,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 14:46:12.995 [debug] QUERY OK source="sources" db=1.0ms idle=209.9ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [26] 14:46:12.995 [debug] QUERY OK source="settings" db=0.2ms queue=0.1ms idle=211.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:46:12.996 [debug] QUERY OK source="media_profiles" db=0.2ms idle=211.8ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 14:46:12.996 [debug] QUERY OK source="settings" db=0.2ms idle=10.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:46:12.996 [debug] Fetching recent media IDs from YouTube API for playlist: UU6NY7eg1FxCfAVX58yL0cJw 14:46:12.997 [debug] QUERY OK source="settings" db=0.1ms idle=3.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:46:12.997 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 14:46:13.373 [info] {"source":"oban","duration":3198,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:46:13.493 [debug] QUERY OK source="media_items" db=2.9ms idle=493.7ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND m0."media_id" IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [26, "o2tiLxanOd0", "3Hkalon06bY", "acwCbVzHnRM", "m3Cddar422Y", "QItYx18RK4M", "iFrwlymvtTM", "CBKzBKWhNmE", "twi0ZP1ZWew", "MChkfGtdrgI", "usOf_0SOPl8", "7CamgxCV_lg", "CYW3qAtbiSg", "hkLPA0MEUFk", "Z9APq63an58", "MA2a2BtDQtE", "a23hasz0yk8", "o4tK4PhiK_c", "2-lUv1_A_KU", "W6GGXQ4xVdg", "TOIuoWmEqxo", "JRXSDo6asDk", "iAodr4mipf0", "12wArTNB9dk", "CFZ0TtEbofU", "RwW6yAVtf6Q", "9RshF2jpgLo", "MV8U7XQUpnY", "G0o-l5G0M4s", "FVOkr5w0O0I", "1IFJive9Bvc", "kuc2kAgYD8M", "jHOE86EMHvA", "CjuPAweX08c", "LH0RNHxukJs", "o6OxlF4vAuw", "Qxfr7h-PzdA", "xU_1w6OSnac", "-6G1TNBxp08", "o-ripoq_oXU", "Uevcwu2GLMs", "BAoXgNQ_wRI", "p4NWPk9B20I", "XKxqsR_4w_I", "BNtAWc-vLX4", "ktw-dS-26Gk", "Idbcu-oVtDs", "JCxqgAhaJj4", "A0vzWxUO5TA", "6M0wfDl0LEI", ...] 14:46:13.501 [debug] QUERY OK source="media_items" db=3.9ms idle=500.9ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [26] 14:46:13.504 [debug] QUERY OK source="tasks" db=0.4ms idle=130.8ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [203170, 26, ~U[2026-01-03 03:46:13Z], ~U[2026-01-03 03:46:13Z]] 14:46:13.505 [info] {"args":{"id":26},"id":203146,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":511167,"event":"job:stop","queue_time":352356,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 14:46:40.901 [info] GET /sources/27/media/58541/force_download 14:46:40.902 [debug] QUERY OK source="settings" db=0.6ms queue=0.2ms idle=852.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:46:40.904 [debug] QUERY OK source="settings" db=1.4ms queue=0.1ms idle=118.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:46:40.904 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 14:46:40.906 [error] #PID<0.11477.0> running PinchflatWeb.Endpoint (connection #PID<0.11476.0>, stream id 1) terminated Server: pinchflat.uiau7e.uncld.dev:80 (http) Request: GET /sources/27/media/58541/force_download ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/27/media/58541/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.11476.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/27/media/58541/force_download", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 53498}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYclNjVUxKNHZsRHFnYVJYN2Y4XzRlaUFR.KFYlv3_J7_xoJ6K2Z-SY5IsK-iPwmTocdkzUgVZjgqI", "from" => "gptbot(at)openai.com", "host" => "pinchflat.uiau7e.uncld.dev", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.3; +https://openai.com/gptbot)", "via" => "2.0 Caddy", "x-forwarded-for" => "74.7.227.183", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https", "x-openai-host-hash" => "454925582" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{ "_pinchflat_key" => "SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYclNjVUxKNHZsRHFnYVJYN2Y4XzRlaUFR.KFYlv3_J7_xoJ6K2Z-SY5IsK-iPwmTocdkzUgVZjgqI" }, halted: false, host: "pinchflat.uiau7e.uncld.dev", method: "GET", owner: #PID<0.11477.0>, params: %{}, path_info: ["sources", "27", "media", "58541", "force_download"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.uiau7e.uncld.dev", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {10, 210, 0, 2}, req_cookies: %{ "_pinchflat_key" => "SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYclNjVUxKNHZsRHFnYVJYN2Y4XzRlaUFR.KFYlv3_J7_xoJ6K2Z-SY5IsK-iPwmTocdkzUgVZjgqI" }, req_headers: [ {"accept", "*/*"}, {"accept-encoding", "gzip, br, deflate"}, {"cookie", "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYclNjVUxKNHZsRHFnYVJYN2Y4XzRlaUFR.KFYlv3_J7_xoJ6K2Z-SY5IsK-iPwmTocdkzUgVZjgqI"}, {"from", "gptbot(at)openai.com"}, {"host", "pinchflat.uiau7e.uncld.dev"}, {"user-agent", "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.3; +https://openai.com/gptbot)"}, {"via", "2.0 Caddy"}, {"x-forwarded-for", "74.7.227.183"}, {"x-forwarded-host", "pinchflat.uiau7e.uncld.dev"}, {"x-forwarded-proto", "https"}, {"x-openai-host-hash", "454925582"} ], request_path: "/sources/27/media/58541/force_download", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GIcb2cV4zY8GFmAAAjEh"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.11476.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/27/media/58541/force_download", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 53498}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYclNjVUxKNHZsRHFnYVJYN2Y4XzRlaUFR.KFYlv3_J7_xoJ6K2Z-SY5IsK-iPwmTocdkzUgVZjgqI", "from" => "gptbot(at)openai.com", "host" => "pinchflat.uiau7e.uncld.dev", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.3; +https://openai.com/gptbot)", "via" => "2.0 Caddy", "x-forwarded-for" => "74.7.227.183", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https", "x-openai-host-hash" => "454925582" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/27/media/58541/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.11476.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/27/media/58541/force_download", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 53498}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYclNjVUxKNHZsRHFnYVJYN2Y4XzRlaUFR.KFYlv3_J7_xoJ6K2Z-SY5IsK-iPwmTocdkzUgVZjgqI", "from" => "gptbot(at)openai.com", "host" => "pinchflat.uiau7e.uncld.dev", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.3; +https://openai.com/gptbot)", "via" => "2.0 Caddy", "x-forwarded-for" => "74.7.227.183", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https", "x-openai-host-hash" => "454925582" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{ " (truncated) 14:46:43.376 [info] {"source":"oban","duration":2257,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:46:47.075 [info] {"args":{"id":6},"id":203147,"meta":{},"system_time":1767412007075206404,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 14:46:47.076 [debug] QUERY OK source="sources" db=0.8ms idle=291.5ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [6] 14:46:47.077 [debug] QUERY OK source="settings" db=0.6ms idle=292.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:46:47.078 [debug] QUERY OK source="media_profiles" db=0.7ms idle=293.4ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 14:46:47.079 [debug] QUERY OK source="settings" db=0.5ms idle=10.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:46:47.079 [debug] Fetching recent media IDs from YouTube API for playlist: UUg0m_Ah8P_MQbnn77-vYnYw 14:46:47.079 [debug] QUERY OK source="settings" db=0.4ms idle=4.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:46:47.079 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 14:46:47.413 [debug] QUERY OK source="media_items" db=3.6ms idle=332.7ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND m0."media_id" IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [6, "9i6Qm3LV89c", "2PC3HH4izX4", "dJLpdoPNdZ8", "lqRHAbkn9bo", "nlYgNjtr904", "uHKLZ8LcCJA", "V3LW3EWUxqE", "XaTvV6zJEXk", "AjnHxtnxMhk", "vuJTLm11QmQ", "vUzRuvCi6lw", "NlxSd2y_gfI", "ivcFXtMGdE8", "m17ugzx_Ab4", "o5QiLKbHeMI", "moqdU9sMrRk", "Yi55tGTEMqQ", "rHliVvnQ5Pg", "nCZSTFM-v9k", "uasm2RENDH4", "musiLNtEyRY", "uSvqlME0IsI", "Yo0hmtg8LNc", "HOFD3h9Up9w", "uibJMXaSB7c", "NGq1EoY_r2I", "IL-UZlbO3zI", "-_txeeBP6dg", "iH7BiZvsczM", "rIKuiZVHfZo", "HRw20b6hb_s", "xOQPha-de4A", "L6IXwj-_X1k", "_7--BDD2pxk", "Xaq53-12iW8", "bfb-ZBwdvpo", "3DLbHio3ivA", "xhpwyar65ms", "UzEr8RISXds", "tHU6PeO4WDs", "2z1AaBGzA1g", "y-t3hyj7Mz8", "5ZUXEQ6d0dM", "pn8GF5HaKZc", "wH3XASrC2DA", "C_oeOAG0G5E", "c8gYHg1lZCg", "cPEXUpZ6CWk", "jST7T0L_k_w", ...] 14:46:47.418 [debug] QUERY OK source="media_items" db=3.4ms idle=337.2ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [6] 14:46:47.423 [debug] QUERY OK source="tasks" db=0.7ms idle=342.7ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [203171, 6, ~U[2026-01-03 03:46:47Z], ~U[2026-01-03 03:46:47Z]] 14:46:47.427 [info] {"args":{"id":6},"id":203147,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":348336,"event":"job:stop","queue_time":435146,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 14:47:00.284 [info] {"source":"oban","duration":486,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 14:47:11.147 [info] {"args":{"id":9},"id":203148,"meta":{},"system_time":1767412031147400910,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 14:47:11.148 [debug] QUERY OK source="sources" db=0.7ms idle=363.7ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [9] 14:47:11.149 [debug] QUERY OK source="settings" db=0.3ms idle=364.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:47:11.149 [debug] QUERY OK source="media_profiles" db=0.3ms idle=365.3ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 14:47:11.150 [debug] QUERY OK source="settings" db=0.2ms idle=10.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:47:11.150 [debug] Fetching recent media IDs from YouTube API for playlist: UUy0Pr5u-MwGXXzp_GDd4m_g 14:47:11.150 [debug] QUERY OK source="settings" db=0.1ms idle=3.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:47:11.150 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 14:47:11.529 [debug] QUERY OK source="media_items" db=2.9ms idle=377.4ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND m0."media_id" IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [9, "97DBlIPSMkI", "V7Q9VnfzRqE", "Nub2m3iioSw", "Tpk6NNZubqU", "L4Eh-MtBFFk", "sa8p75KJqOc", "2gpPC0vsry0", "B2l4YfAav6M", "iL1qKxcaZnU", "NH5AAcLn03o", "8fOaCUvVQpY", "8aQ7sJ9EyaY", "ld0ngHU3YQ0", "uKzsA5kc8jw", "_A1dxw_T6dw", "TFVA0Bc5ajA", "IgFSOa0RBxs", "fGAe2cenBhs", "a6_0p8e42Y4", "vnR7jnJYN-k", "db6_ragog48", "SMKDYoXrZzw", "-fM_uGwlRlU", "kRxJ2g3T0zs", "GgU7L-z0kbA", "yFZJ6Qb8mDY", "YkyTbtgcfJU", "k01ARI01oMU", "ToFKhGfGgc0", "MU8JlJIuwh4", "IY36QIh6VG8", "brtcZFHW0P4", "A39Glu9I9fk", "Ib_1jixUkLw", "c9UIDwF7oS4", "CcSE-YHRJP4", "Tpmb_mTKuhs", "yNbz6f5dMLE", "BAVQcOWZi-Y", "Fa7RxeYNUTw", "teIoBQdGT5s", "UqykI_3CT-g", "vBeWkDTK6Eg", "qOp_nyKqmic", "fEqSlPpXHYk", "lII4lxNpPVg", "BaxD8BI3wI4", "me_afppRbyI", "C69B2k3fAvs", ...] 14:47:11.537 [debug] QUERY OK source="media_items" db=4.2ms queue=0.1ms idle=383.3ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [9] 14:47:11.540 [debug] QUERY OK source="tasks" db=0.4ms idle=389.3ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [203172, 9, ~U[2026-01-03 03:47:11Z], ~U[2026-01-03 03:47:11Z]] 14:47:11.541 [info] {"args":{"id":9},"id":203148,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":393168,"event":"job:stop","queue_time":398338,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 14:47:13.380 [info] {"source":"oban","duration":3546,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:47:27.211 [info] {"args":{"id":10},"id":203149,"meta":{},"system_time":1767412047211673799,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 14:47:27.213 [debug] QUERY OK source="sources" db=0.6ms queue=0.1ms idle=428.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [10] 14:47:27.214 [debug] QUERY OK source="settings" db=0.5ms queue=0.1ms idle=429.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:47:27.215 [debug] QUERY OK source="media_profiles" db=0.6ms idle=430.1ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 14:47:27.216 [debug] QUERY OK source="settings" db=0.5ms queue=0.1ms idle=11.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:47:27.216 [debug] Fetching recent media IDs from YouTube API for playlist: UUmHz7DQbbkcY_UoWY8bBJLw 14:47:27.217 [debug] QUERY OK source="settings" db=0.3ms queue=0.1ms idle=5.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:47:27.217 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 14:47:27.587 [debug] QUERY OK source="media_items" db=4.9ms idle=368.9ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND m0."media_id" IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [10, "PhjtM9ePmYY", "BYRqpIciNLg", "KKoDQ42Fcpk", "AifAIqHezb8", "sjsS60OTXSQ", "KVouvdlUtGQ", "Th4RJNVZN3Q", "a9Zj-iWYC4w", "Z2_oFD9DMd0", "OW9WywZF_d4", "hFSwWzxrqUA", "XsPrNwyLDJM", "9NUcKPnPMEw", "GvP1jo9RstE", "8jul3DEwgMY", "e4K0Co-JeKQ", "wxoYf3KBlis", "YFQm8Hk73ug", "iu5rnQkfO6M", "RESslu3Bhuk", "vn9VDbacUgQ", "mLozqDnhqpQ", "GWXCCBsOMSg", "OXIpbrvFxfE", "hbZb1Q0mM7k", "lj2JTO1L1Tc", "dGjMw1SkmjU", "vBQFfmlTK_4", "91WqepC8kS0", "UUZfxQhKmfA", "aPsq5nqvhxg", "AJ7atBkisOU", "2fZ0nkP5dfo", "qKZXQGCLRJY", "F26dxTMmW10", "cYPuhhATDXc", "uLrOyIpjkZ8", "kDu56nXRqGQ", "I4lBTlClwww", "h23xksD0dN0", "SgameZUfeGo", "NPgbgiRJCxA", "-v88e4T8i_E", "HkgV_-nJOuE", "3h1vM0lIrpM", "gjExqY_iB38", "5ScP_aPBEiQ", "t5CkW-CKTZs", "gKKRYcy4BbU", ...] 14:47:27.591 [debug] QUERY OK source="settings" db=0.5ms idle=377.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:47:27.592 [debug] QUERY OK source="settings" db=0.4ms queue=0.1ms idle=376.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:47:27.592 [debug] Running yt-dlp command for action: get_media_attributes 14:47:27.594 [debug] QUERY OK source="settings" db=0.2ms idle=378.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:47:27.595 [debug] QUERY OK source="settings" db=0.3ms idle=377.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:47:27.595 [debug] QUERY OK source="settings" db=0.3ms idle=8.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:47:27.596 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=Z2_oFD9DMd0 --simulate --skip-download --output /downloads/Switch Angel/Season %(upload_date>%Y)S/s%(upload_date>%Y)Se%(upload_date>%m%d)S00 - %(title)S.%(ext)S --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --print-to-file %(.{id,title,live_status,original_url,description,aspect_ratio,duration,upload_date,timestamp,playlist_index,filename})j /tmp/pinchflat/data/aa/e2/aae2932d16e831c59c400a6f7481aafa6934c707e7819e83b62683d2f32dfa3c.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:47:28.220 [info] {"args":{"id":11},"id":203150,"meta":{},"system_time":1767412048219670622,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 14:47:28.221 [debug] QUERY OK source="sources" db=0.7ms queue=0.1ms idle=625.6ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [11] 14:47:28.222 [debug] QUERY OK source="settings" db=0.8ms queue=0.1ms idle=626.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:47:28.223 [debug] QUERY OK source="media_profiles" db=0.6ms idle=626.9ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 14:47:28.224 [debug] QUERY OK source="settings" db=0.7ms idle=11.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:47:28.224 [debug] Fetching recent media IDs from YouTube API for playlist: UUJ901NqoRaXMnIm7aOjLyuA 14:47:28.225 [debug] QUERY OK source="settings" db=0.3ms idle=5.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:47:28.225 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 14:47:28.595 [debug] QUERY OK source="media_items" db=5.2ms queue=0.1ms idle=367.9ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND m0."media_id" IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [11, "1ji7g8qZJ_4", "xP5WmZg7OMg", "HBoV87Jndh8", "-zpzRklxMEo", "9AX85j6Lp4M", "p2U9d4FWDaI", "hfT6XVSa2xE", "qBOKYwe8NzA", "Cf5jL5JNq7k", "bAV0y2acB9c", "XE6JvrChQ_Q", "Efv456Ks9ms", "qgiJ4C5s46U", "KaVC_mTFqHk", "M6gat-hai0I", "_xwFJzOtQv0", "Ao-M_YvfhXY", "SKHWQwf0ago", "gmuFtWZG3v8", "H4oeJ87TMt4", "rS2fDo6mhS8", "aOF6Pe_bTeI", "x8B3Z91qkoE", "fVvYTWAHoBQ", "8r6xqWTqcPQ", "k677A--BwGE", "CSTtrz8t1eg", "w6Ej3Iim4Ic", "jO8S8_KX6p0", "tslsVdOjWFM", "dckL2BCDYmQ", "E3N8_pRRtGM", "qeOEDUgy5xA", "MIPvNqPwMxc", "V2GelRPp5fg", "jWH5H6Y6T-A", "1ObIAwtqt9k", "yVdv1xVggZ4", "Pxpz4211gMI", "UEUAHI0AZu4", "gitCR-iTofw", "eTg2rHYqUZc", "QnOIm4U7Dzs", "RYNFRbP4OWQ", "R3kNCz120XM", "vMflt2fJZYw", "4DkhBa_L_4E", "4IqFTPw6Mzk", "AepfCktyPLk", ...] 14:47:28.609 [debug] QUERY OK source="media_items" db=10.1ms queue=0.1ms idle=375.9ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [11] 14:47:28.617 [debug] QUERY OK source="tasks" db=0.9ms idle=21.5ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [203173, 11, ~U[2026-01-03 03:47:28Z], ~U[2026-01-03 03:47:28Z]] 14:47:28.619 [info] {"args":{"id":11},"id":203150,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":397678,"event":"job:stop","queue_time":192060,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 14:47:32.101 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=Z2_oFD9DMd0 --simulate --skip-download --output /downloads/Switch Angel/Season %(upload_date>%Y)S/s%(upload_date>%Y)Se%(upload_date>%m%d)S00 - %(title)S.%(ext)S --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --print-to-file %(.{id,title,live_status,original_url,description,aspect_ratio,duration,upload_date,timestamp,playlist_index,filename})j /tmp/pinchflat/data/aa/e2/aae2932d16e831c59c400a6f7481aafa6934c707e7819e83b62683d2f32dfa3c.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 1 with: ERROR: [youtube] Z2_oFD9DMd0: This live event will begin in a few moments. 14:47:32.101 [error] Error creating media item 'Z2_oFD9DMd0' from URL: {:error, "ERROR: [youtube] Z2_oFD9DMd0: This live event will begin in a few moments.\n", 1} 14:47:32.103 [debug] QUERY OK source="media_items" db=1.2ms idle=880.3ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [10] 14:47:32.106 [debug] QUERY OK source="tasks" db=0.3ms idle=321.6ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [203174, 10, ~U[2026-01-03 03:47:32Z], ~U[2026-01-03 03:47:32Z]] 14:47:32.107 [info] {"args":{"id":10},"id":203149,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":4894637,"event":"job:stop","queue_time":905067,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 14:47:43.382 [info] {"source":"oban","duration":1365,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:47:43.485 [info] GET /sources/23/media/21396/force_download 14:47:43.485 [debug] QUERY OK source="settings" db=0.4ms idle=1701.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:47:43.486 [debug] QUERY OK source="settings" db=0.4ms idle=1702.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:47:43.486 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 14:47:43.487 [error] #PID<0.11490.0> running PinchflatWeb.Endpoint (connection #PID<0.11489.0>, stream id 1) terminated Server: pinchflat.uiau7e.uncld.dev:80 (http) Request: GET /sources/23/media/21396/force_download ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/23/media/21396/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.11489.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/23/media/21396/force_download", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 57538}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "from" => "gptbot(at)openai.com", "host" => "pinchflat.uiau7e.uncld.dev", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.3; +https://openai.com/gptbot)", "via" => "2.0 Caddy", "x-forwarded-for" => "74.7.227.183", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https", "x-openai-host-hash" => "454925582" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.uiau7e.uncld.dev", method: "GET", owner: #PID<0.11490.0>, params: %{}, path_info: ["sources", "23", "media", "21396", "force_download"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.uiau7e.uncld.dev", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {10, 210, 0, 2}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"accept-encoding", "gzip, br, deflate"}, {"from", "gptbot(at)openai.com"}, {"host", "pinchflat.uiau7e.uncld.dev"}, {"user-agent", "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.3; +https://openai.com/gptbot)"}, {"via", "2.0 Caddy"}, {"x-forwarded-for", "74.7.227.183"}, {"x-forwarded-host", "pinchflat.uiau7e.uncld.dev"}, {"x-forwarded-proto", "https"}, {"x-openai-host-hash", "454925582"} ], request_path: "/sources/23/media/21396/force_download", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GIcb6FfC19NBeFAAAjLh"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.11489.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/23/media/21396/force_download", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 57538}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "from" => "gptbot(at)openai.com", "host" => "pinchflat.uiau7e.uncld.dev", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.3; +https://openai.com/gptbot)", "via" => "2.0 Caddy", "x-forwarded-for" => "74.7.227.183", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https", "x-openai-host-hash" => "454925582" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/23/media/21396/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.11489.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/23/media/21396/force_download", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 57538}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "from" => "gptbot(at)openai.com", "host" => "pinchflat.uiau7e.uncld.dev", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.3; +https://openai.com/gptbot)", "via" => "2.0 Caddy", "x-forwarded-for" => "74.7.227.183", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https", "x-openai-host-hash" => "454925582" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.uiau7e.uncld.dev", method: "GET", owner: #PID<0.11490.0>, params: %{}, path_info: ["sources", "23", "media", "21396", "force_download"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.uiau7e.uncld.dev", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {10, 210, 0, 2}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"accept-en (truncated) 14:48:00.286 [info] {"source":"oban","duration":537,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 14:48:07.335 [info] {"args":{"id":15},"id":203151,"meta":{},"system_time":1767412087335285339,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 14:48:07.336 [debug] QUERY OK source="sources" db=0.7ms idle=1012.7ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [15] 14:48:07.337 [debug] QUERY OK source="settings" db=0.5ms idle=552.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:48:07.338 [debug] QUERY OK source="media_profiles" db=0.5ms idle=553.6ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 14:48:07.338 [debug] QUERY OK source="settings" db=0.5ms idle=10.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:48:07.339 [debug] Fetching recent media IDs from YouTube API for playlist: UU5qRAYQmCLx8hFGIiTWSQvA 14:48:07.339 [debug] QUERY OK source="settings" db=0.4ms idle=3.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:48:07.339 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 14:48:08.572 [debug] QUERY OK source="media_items" db=6.1ms idle=1229.0ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND m0."media_id" IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [15, "EMmIdkwn6a4", "EBT3EIoJpDc", "P2j2jM33fbk", "KuYhCywx8JM", "EteM8YNAFu8", "-KN9sfrroJA", "35D6yzUQM8I", "pIqvmN8ePkc", "rR5RqL2cjPE", "B2mmx85ZIsE", "b-jTeTJ1ekk", "Qa4dYWqfgmg", "TZZgrQEsl4c", "hMFEigXIhgA", "yf8ozrYeFEk", "QoCmQRZKU_c", "Qa9rFTiItTE", "Kxw9tq49VBM", "aLj4QgEf7gQ", "-D7c5td5vhw", "UNJUpex0blc", "Afa2PJq3okY", "r9A1srY7LdU", "m6YZoOWrLlk", "RKSlnQcuZt4", "qEjkDPJmKIo", "fZirHVq8wp0", "jdB56zAMJgE", "F92Oe7JuDtI", "luEgOCX58gw", "9CkNfdQpsuo", "eC3Mv474A8c", "mq6lsIgLLqY", "Wqmn4OTW6Fw", "4yYMQFLVRNc", "TsdMEmH2Lsw", "HQeTYLxz6iY", "V-JtebgnFoM", "2cXS3i36Kh8", "wznCZtGitN8", "2tYVGxZMOiQ", "9bxljq6ljbE", "9hHVjpo_HDA", "w8bqGx4ZtYQ", "yFYGd9irJ5k", "WTfhL2-cT1U", "LCR3ZsqWhuo", "Tj09jojsiaM", "_GZvVqjqlM0", ...] 14:48:08.580 [debug] QUERY OK source="media_items" db=4.9ms idle=1236.7ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [15] 14:48:08.582 [debug] QUERY OK source="tasks" db=0.5ms idle=250.9ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [203175, 15, ~U[2026-01-03 03:48:08Z], ~U[2026-01-03 03:48:08Z]] 14:48:08.583 [info] {"args":{"id":15},"id":203151,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":1247617,"event":"job:stop","queue_time":343010,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 14:48:12.352 [info] {"args":{"id":18},"id":203152,"meta":{},"system_time":1767412092352309797,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 14:48:12.353 [debug] QUERY OK source="sources" db=0.8ms idle=568.6ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [18] 14:48:12.354 [debug] QUERY OK source="settings" db=0.5ms idle=569.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:48:12.355 [debug] QUERY OK source="media_profiles" db=0.6ms idle=570.5ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 14:48:12.356 [debug] QUERY OK source="settings" db=0.4ms idle=11.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:48:12.356 [debug] Fetching recent media IDs from YouTube API for playlist: UUuisDAMnvHMYuLFRedMgmVw 14:48:12.356 [debug] QUERY OK source="settings" db=0.3ms idle=4.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:48:12.356 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 14:48:12.772 [debug] QUERY OK source="media_items" db=4.9ms idle=413.9ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND m0."media_id" IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [18, "mf2Em7F_qDM", "PjvBtlIGGQU", "EF_PO-pALOQ", "j9eh7huEF4A", "y3FGuwfGzL0", "ZWH_eu9wdUE", "UccWWifa8jA", "0L8xWydKOhk", "CkSloYV3ay4", "SkQ7ywGW2HY", "QM3qu001Xdk", "jOTurZWIEmw", "pojDco-WhA4", "GD19Y1VYBKY", "cvViWSBLu-U", "wXm5ocXv9ho", "uB1Tk9eXQbk", "I7vb-PGArW4", "0h9qvAA5dfQ", "7yx-SecBATo", "oj1ySj7TVJk", "dtTdjRB4Q4g", "mpfcVNb8Mhs", "D3MFnCKv2Mc", "458_RTLWN2E", "W26HiyQ5k1s", "w4NDxPYJs1I", "cxuEV05UN7U", "5cPjR5FVDOw", "nJhbZNSrP4c", "X9Eu7mui35E", "wrgZHIpa6F0", "JEN7jfNqy1A", "v31DYiS2LbY", "iJfD5wWLvuM", "qPVTMbiyPLE", "rM_nvsztYlw", "IoD1j3ZG-SQ", "DDnqxbWvIgQ", "HIhF6C1yc7M", "DlNIxjiqQvs", "JO0-kOXXMEw", "2DihqSsed3w", "uDlvlF5iKz8", "v2jg_5WZ41o", "JekH9K8_SS8", "xVV_6qW_Ho8", "qYOABpvD49s", "VAw8zvyLmfE", ...] 14:48:12.782 [debug] QUERY OK source="media_items" db=7.8ms idle=420.2ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [18] 14:48:12.787 [debug] QUERY OK source="tasks" db=0.9ms idle=429.3ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [203176, 18, ~U[2026-01-03 03:48:12Z], ~U[2026-01-03 03:48:12Z]] 14:48:12.788 [info] {"args":{"id":18},"id":203152,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":434822,"event":"job:stop","queue_time":400716,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 14:48:13.385 [info] {"source":"oban","duration":2856,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:48:23.389 [info] {"args":{"id":16},"id":203153,"meta":{},"system_time":1767412103389492865,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 14:48:23.390 [debug] QUERY OK source="sources" db=0.4ms queue=0.1ms idle=605.8ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [16] 14:48:23.391 [debug] QUERY OK source="settings" db=0.4ms queue=0.1ms idle=606.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:48:23.392 [debug] QUERY OK source="media_profiles" db=0.5ms idle=607.6ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 14:48:23.393 [debug] QUERY OK source="settings" db=0.3ms idle=11.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:48:23.393 [debug] Fetching recent media IDs from YouTube API for playlist: UUPPfK7Nq_yQR84rn1wcTXBg 14:48:23.394 [debug] QUERY OK source="settings" db=0.2ms queue=0.1ms idle=4.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:48:23.394 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 14:48:23.758 [debug] QUERY OK source="media_items" db=3.0ms idle=364.2ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND m0."media_id" IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [16, "BiTNUZ2zONY", "7pVLE7ggkcc", "YAh-xEteBz4", "6hNpMT5OwGo", "vx3oGZYqxm4", "7W_ZSNuS-4w", "CxUC2HXvO84", "RxapAZRYJ6I", "f2ainZL8Tzk", "KJtASaKc95g", "yBCh5cyI0Po", "dg_HQL3GBcY", "ZiVvXPpo0eE", "YO1TnWptv3o", "HwnBnsQBeOA", "CCE2v3oIa74", "OWVPYr9e76Y", "VApJtIyMEec", "XtOIQYVq26o", "gZL1KzV54Cw", "kmU-Eazta1s", "XXthHXEpEP8", "dPw_HkMgYI0", "rxq-TvgNCBU", "SaCbUtTuLhA", "TWLqSk4ZlN0", "p7_rduK5WA0", "lNZ56C-f4a8", "GlK3f1cs_l4", "Yabwyb14-BQ", "WupRwvJ7sOc", "MhpoNL1gZbw", "yUfm6AbtJ0g", "y8zfgIgZ4c0", "gOwjmKMmkV4", "aTiunvocl5c", "KebjX3KEgWQ", "0T2MYXljL5o", "i7sbS92R4cg", "66CDGzjLBtY", "T_W0FWiJmM8", "u_80rUKItGc", "C9_wibbg1Ug", "A4mg1ZUb-7s", "YmUfZt4Ku9s", "DoWsgrlIjYU", "gc5ojxTuwOg", "3AMdPMoGJus", "htYY8VwN-9g", ...] 14:48:23.762 [debug] QUERY OK source="media_items" db=1.9ms idle=368.1ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [16] 14:48:23.765 [debug] QUERY OK source="tasks" db=0.7ms idle=370.3ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [203177, 16, ~U[2026-01-03 03:48:23Z], ~U[2026-01-03 03:48:23Z]] 14:48:23.766 [info] {"args":{"id":16},"id":203153,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":375843,"event":"job:stop","queue_time":375648,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 14:48:43.388 [info] {"source":"oban","duration":1727,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:48:44.439 [info] GET /sources/23/media/21399/force_download 14:48:44.440 [debug] QUERY OK source="settings" db=0.3ms idle=1655.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:48:44.441 [debug] QUERY OK source="settings" db=0.8ms idle=1656.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:48:44.441 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 14:48:44.442 [error] #PID<0.11500.0> running PinchflatWeb.Endpoint (connection #PID<0.11499.0>, stream id 1) terminated Server: pinchflat.uiau7e.uncld.dev:80 (http) Request: GET /sources/23/media/21399/force_download ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/23/media/21399/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.11499.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/23/media/21399/force_download", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 41560}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "from" => "gptbot(at)openai.com", "host" => "pinchflat.uiau7e.uncld.dev", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.3; +https://openai.com/gptbot)", "via" => "2.0 Caddy", "x-forwarded-for" => "74.7.227.183", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https", "x-openai-host-hash" => "454925582" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.uiau7e.uncld.dev", method: "GET", owner: #PID<0.11500.0>, params: %{}, path_info: ["sources", "23", "media", "21399", "force_download"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.uiau7e.uncld.dev", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {10, 210, 0, 2}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"accept-encoding", "gzip, br, deflate"}, {"from", "gptbot(at)openai.com"}, {"host", "pinchflat.uiau7e.uncld.dev"}, {"user-agent", "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.3; +https://openai.com/gptbot)"}, {"via", "2.0 Caddy"}, {"x-forwarded-for", "74.7.227.183"}, {"x-forwarded-host", "pinchflat.uiau7e.uncld.dev"}, {"x-forwarded-proto", "https"}, {"x-openai-host-hash", "454925582"} ], request_path: "/sources/23/media/21399/force_download", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GIcb9ojuV15IfWoAAIlD"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.11499.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/23/media/21399/force_download", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 41560}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "from" => "gptbot(at)openai.com", "host" => "pinchflat.uiau7e.uncld.dev", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.3; +https://openai.com/gptbot)", "via" => "2.0 Caddy", "x-forwarded-for" => "74.7.227.183", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https", "x-openai-host-hash" => "454925582" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/23/media/21399/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.11499.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/23/media/21399/force_download", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 41560}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "from" => "gptbot(at)openai.com", "host" => "pinchflat.uiau7e.uncld.dev", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.3; +https://openai.com/gptbot)", "via" => "2.0 Caddy", "x-forwarded-for" => "74.7.227.183", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https", "x-openai-host-hash" => "454925582" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.uiau7e.uncld.dev", method: "GET", owner: #PID<0.11500.0>, params: %{}, path_info: ["sources", "23", "media", "21399", "force_download"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.uiau7e.uncld.dev", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {10, 210, 0, 2}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"accept-en (truncated) 14:49:00.287 [info] {"source":"oban","duration":379,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 14:49:13.391 [info] {"source":"oban","duration":1707,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:49:25.552 [info] {"args":{"id":20},"id":203154,"meta":{},"system_time":1767412165551863286,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 14:49:25.553 [debug] QUERY OK source="sources" db=0.4ms idle=1012.9ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [20] 14:49:25.554 [debug] QUERY OK source="settings" db=0.2ms idle=769.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:49:25.554 [debug] QUERY OK source="media_profiles" db=0.3ms queue=0.1ms idle=770.3ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 14:49:25.555 [debug] QUERY OK source="settings" db=0.4ms queue=0.1ms idle=10.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:49:25.556 [debug] Fetching recent media IDs from YouTube API for playlist: UU3HjB3X8jeENm46HCkI0Inw 14:49:25.556 [debug] QUERY OK source="settings" db=0.2ms queue=0.1ms idle=4.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:49:25.557 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 14:49:26.143 [debug] QUERY OK source="media_items" db=3.2ms queue=0.1ms idle=586.7ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND m0."media_id" IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [20, "CISwNCR8EXc", "EiIJqc5mV90", "8xJUjtnu72E", "Whh2rDVxvYg", "VybtaBZZqCg", "fuIOAraiRAY", "Ri4qqynMLHk", "xglNhNm95KQ", "5hEq1j_TsEY", "9f5iUsFWqoo", "0SXIhVupLZY", "3gAJpHP3yg4", "8zlnEbQgP74", "EnTFdexbFrM", "P3AU8vUwvAs", "4dQvS_n0uy4", "T5CRSwoP5_w", "cd8IcmBLpXc", "L4nAcT3QYkA", "5gskEcRE1uo", "1xywnh3DqFQ", "fXeqjU4tHqo", "YBMxdPCG_PY", "GB5_4JUB9hc", "EtAUdnvt0kc", "y-5D2HhLbso", "q8kP0pRFRMc", "8mQkTPoWfPo", "U5I92UivGzU", "UoMTKhqTf1U", "oIvzxlDViTo", "kCnh99-yZIs", "orABz0cfQZY", "VKt2PXkavyU", "kYwyB7o7BJs", "UB1FC4Nim1Y", "kN_eMzoJJmA", "4hdpejFLkPc", "ArSlY77uV1w", "2me_AlMFJh8", "OlKsICCPadE", "SjpJZ66rGaU", "iRZp_9irH2g", "CN9qeuO04A4", "BUnuun2sL-8", "XSIfSz3ZEGc", "hW5pHqeC1t4", "_cJV_l9tlaU", "ChT4bsCpwcU", ...] 14:49:26.152 [debug] QUERY OK source="media_items" db=4.6ms idle=593.5ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [20] 14:49:26.156 [debug] QUERY OK source="tasks" db=0.4ms idle=598.7ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [203178, 20, ~U[2026-01-03 03:49:26Z], ~U[2026-01-03 03:49:26Z]] 14:49:26.157 [info] {"args":{"id":20},"id":203154,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":604470,"event":"job:stop","queue_time":293684,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 14:49:28.562 [info] {"args":{"id":21},"id":203155,"meta":{},"system_time":1767412168561825751,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 14:49:28.563 [debug] QUERY OK source="sources" db=0.5ms idle=778.1ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [21] 14:49:28.563 [debug] QUERY OK source="settings" db=0.3ms idle=779.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:49:28.564 [debug] QUERY OK source="media_profiles" db=0.4ms queue=0.1ms idle=779.7ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 14:49:28.565 [debug] QUERY OK source="settings" db=0.4ms queue=0.1ms idle=11.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:49:28.566 [debug] Fetching recent media IDs from YouTube API for playlist: UU2-i3KuYoODXsM99Z3-Gm0A 14:49:28.567 [debug] QUERY OK source="settings" db=0.2ms queue=0.1ms idle=5.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:49:28.567 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 14:49:28.953 [debug] QUERY OK source="media_items" db=3.1ms idle=386.6ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND m0."media_id" IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [21, "J5rMffRWoaE", "SpNjg65s29I", "8YoFYb6ahAc", "2z0gjjea0mQ", "2d3dU0R4Sk4", "_TFHZ9W3Jt8", "dqjpFcJG5Cc", "Pm0PXgXMNVY", "YXwzRiYgHHc", "mUK6UT_7PZo", "nE49QFWymsI", "WY4rfxfFsVA", "LHyVvVpA0xM", "HYIwk4qL2os", "RZBQe4RLdZ8", "DN5ES5PlK6c", "OaO4UInG53A", "UqcJk1mPcnQ", "NqSJZesKtFs", "3bsFFOwsQzA", "EaXJ1rQ2v5k", "jnV5Ptgg1Xc", "rXghFt-g_OM", "Y_MU28GV-M0", "OZ1fXb4gcv0", "t7JeRNvBG40", "XG41sdzNz7I", "rQFtIiVV7RA", "TviKrv1FTzc", "0iH3eN6DUbM", "AjzhbnNiJO0", "3Y2fdnw7AwM", "8Z_XpRjS2oo", "RY1Nnw_qOGc", "pUB0TU9UQhI", "eVR3mgSxjUk", "5hGYObRZMPQ", "4MemHNHi_YE", "yM6u1-_JNXo", "VGLq2Tjokl4", "XpV4r2KB0UA", "cvrpvL1kO_8", "Q4kS9l81A0k", "Mq47ro7Pc00", "GAu1Y-5EPeM", "dNIc1vTlbDc", "S1zqKNfggRQ", "zquTrv6kv-U", "-H6sKLcAL9I", ...] 14:49:28.961 [debug] QUERY OK source="media_items" db=3.9ms queue=0.1ms idle=393.8ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [21] 14:49:28.965 [debug] QUERY OK source="tasks" db=0.5ms idle=397.8ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [203179, 21, ~U[2026-01-03 03:49:28Z], ~U[2026-01-03 03:49:28Z]] 14:49:28.966 [info] {"args":{"id":21},"id":203155,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":404044,"event":"job:stop","queue_time":433299,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 14:49:43.394 [info] {"source":"oban","duration":2833,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:49:48.132 [info] GET /sources/17/media/43355/force_download 14:49:48.133 [debug] QUERY OK source="settings" db=0.3ms idle=1349.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:49:48.135 [debug] QUERY OK source="settings" db=0.5ms queue=0.1ms idle=1350.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:49:48.135 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 14:49:48.136 [error] #PID<0.11508.0> running PinchflatWeb.Endpoint (connection #PID<0.11507.0>, stream id 1) terminated Server: pinchflat.uiau7e.uncld.dev:80 (http) Request: GET /sources/17/media/43355/force_download ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/17/media/43355/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.11507.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/17/media/43355/force_download", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 40834}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "from" => "gptbot(at)openai.com", "host" => "pinchflat.uiau7e.uncld.dev", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.3; +https://openai.com/gptbot)", "via" => "2.0 Caddy", "x-forwarded-for" => "74.7.227.183", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https", "x-openai-host-hash" => "454925582" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.uiau7e.uncld.dev", method: "GET", owner: #PID<0.11508.0>, params: %{}, path_info: ["sources", "17", "media", "43355", "force_download"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.uiau7e.uncld.dev", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {10, 210, 0, 2}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"accept-encoding", "gzip, br, deflate"}, {"from", "gptbot(at)openai.com"}, {"host", "pinchflat.uiau7e.uncld.dev"}, {"user-agent", "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.3; +https://openai.com/gptbot)"}, {"via", "2.0 Caddy"}, {"x-forwarded-for", "74.7.227.183"}, {"x-forwarded-host", "pinchflat.uiau7e.uncld.dev"}, {"x-forwarded-proto", "https"}, {"x-openai-host-hash", "454925582"} ], request_path: "/sources/17/media/43355/force_download", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GIccBV1ZsuSki4cAAIlj"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.11507.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/17/media/43355/force_download", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 40834}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "from" => "gptbot(at)openai.com", "host" => "pinchflat.uiau7e.uncld.dev", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.3; +https://openai.com/gptbot)", "via" => "2.0 Caddy", "x-forwarded-for" => "74.7.227.183", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https", "x-openai-host-hash" => "454925582" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/17/media/43355/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.11507.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/17/media/43355/force_download", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 40834}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "from" => "gptbot(at)openai.com", "host" => "pinchflat.uiau7e.uncld.dev", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.3; +https://openai.com/gptbot)", "via" => "2.0 Caddy", "x-forwarded-for" => "74.7.227.183", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https", "x-openai-host-hash" => "454925582" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.uiau7e.uncld.dev", method: "GET", owner: #PID<0.11508.0>, params: %{}, path_info: ["sources", "17", "media", "43355", "force_download"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.uiau7e.uncld.dev", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {10, 210, 0, 2}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"accept-en (truncated) 14:50:00.288 [info] {"source":"oban","duration":498,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 14:50:13.398 [info] {"source":"oban","duration":2504,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:50:43.401 [info] {"source":"oban","duration":1514,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:50:48.551 [info] GET /sources/14/media/46556/force_download 14:50:48.553 [debug] QUERY OK source="settings" db=0.6ms queue=0.1ms idle=1768.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:50:48.554 [debug] QUERY OK source="settings" db=0.7ms queue=0.1ms idle=1769.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:50:48.554 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 14:50:48.555 [error] #PID<0.11515.0> running PinchflatWeb.Endpoint (connection #PID<0.11514.0>, stream id 1) terminated Server: pinchflat.uiau7e.uncld.dev:80 (http) Request: GET /sources/14/media/46556/force_download ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/14/media/46556/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.11514.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/14/media/46556/force_download", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 47824}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "from" => "gptbot(at)openai.com", "host" => "pinchflat.uiau7e.uncld.dev", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.3; +https://openai.com/gptbot)", "via" => "2.0 Caddy", "x-forwarded-for" => "74.7.227.183", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https", "x-openai-host-hash" => "454925582" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.uiau7e.uncld.dev", method: "GET", owner: #PID<0.11515.0>, params: %{}, path_info: ["sources", "14", "media", "46556", "force_download"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.uiau7e.uncld.dev", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {10, 210, 0, 2}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"accept-encoding", "gzip, br, deflate"}, {"from", "gptbot(at)openai.com"}, {"host", "pinchflat.uiau7e.uncld.dev"}, {"user-agent", "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.3; +https://openai.com/gptbot)"}, {"via", "2.0 Caddy"}, {"x-forwarded-for", "74.7.227.183"}, {"x-forwarded-host", "pinchflat.uiau7e.uncld.dev"}, {"x-forwarded-proto", "https"}, {"x-openai-host-hash", "454925582"} ], request_path: "/sources/14/media/46556/force_download", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GIccE26b5cGbiLYAAjUB"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.11514.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/14/media/46556/force_download", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 47824}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "from" => "gptbot(at)openai.com", "host" => "pinchflat.uiau7e.uncld.dev", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.3; +https://openai.com/gptbot)", "via" => "2.0 Caddy", "x-forwarded-for" => "74.7.227.183", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https", "x-openai-host-hash" => "454925582" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/14/media/46556/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.11514.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/14/media/46556/force_download", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 47824}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "from" => "gptbot(at)openai.com", "host" => "pinchflat.uiau7e.uncld.dev", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.3; +https://openai.com/gptbot)", "via" => "2.0 Caddy", "x-forwarded-for" => "74.7.227.183", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https", "x-openai-host-hash" => "454925582" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.uiau7e.uncld.dev", method: "GET", owner: #PID<0.11515.0>, params: %{}, path_info: ["sources", "14", "media", "46556", "force_download"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.uiau7e.uncld.dev", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {10, 210, 0, 2}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"accept-en (truncated) 14:51:00.289 [info] {"source":"oban","duration":649,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 14:51:13.403 [info] {"source":"oban","duration":1509,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:51:43.407 [info] {"source":"oban","duration":3718,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:51:54.265 [info] GET /sources/13/media/12742/force_download 14:51:54.266 [debug] QUERY OK source="settings" db=0.4ms queue=0.1ms idle=1481.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:51:54.267 [debug] QUERY OK source="settings" db=0.3ms queue=0.1ms idle=1251.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:51:54.268 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 14:51:54.268 [error] #PID<0.11521.0> running PinchflatWeb.Endpoint (connection #PID<0.11520.0>, stream id 1) terminated Server: pinchflat.uiau7e.uncld.dev:80 (http) Request: GET /sources/13/media/12742/force_download ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/13/media/12742/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.11520.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/13/media/12742/force_download", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 46798}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "from" => "gptbot(at)openai.com", "host" => "pinchflat.uiau7e.uncld.dev", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.3; +https://openai.com/gptbot)", "via" => "2.0 Caddy", "x-forwarded-for" => "74.7.227.183", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https", "x-openai-host-hash" => "454925582" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.uiau7e.uncld.dev", method: "GET", owner: #PID<0.11521.0>, params: %{}, path_info: ["sources", "13", "media", "12742", "force_download"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.uiau7e.uncld.dev", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {10, 210, 0, 2}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"accept-encoding", "gzip, br, deflate"}, {"from", "gptbot(at)openai.com"}, {"host", "pinchflat.uiau7e.uncld.dev"}, {"user-agent", "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.3; +https://openai.com/gptbot)"}, {"via", "2.0 Caddy"}, {"x-forwarded-for", "74.7.227.183"}, {"x-forwarded-host", "pinchflat.uiau7e.uncld.dev"}, {"x-forwarded-proto", "https"}, {"x-openai-host-hash", "454925582"} ], request_path: "/sources/13/media/12742/force_download", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GIccIrtu58A9bwQAAImj"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.11520.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/13/media/12742/force_download", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 46798}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "from" => "gptbot(at)openai.com", "host" => "pinchflat.uiau7e.uncld.dev", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.3; +https://openai.com/gptbot)", "via" => "2.0 Caddy", "x-forwarded-for" => "74.7.227.183", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https", "x-openai-host-hash" => "454925582" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/13/media/12742/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.11520.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/13/media/12742/force_download", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 46798}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "from" => "gptbot(at)openai.com", "host" => "pinchflat.uiau7e.uncld.dev", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.3; +https://openai.com/gptbot)", "via" => "2.0 Caddy", "x-forwarded-for" => "74.7.227.183", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https", "x-openai-host-hash" => "454925582" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.uiau7e.uncld.dev", method: "GET", owner: #PID<0.11521.0>, params: %{}, path_info: ["sources", "13", "media", "12742", "force_download"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.uiau7e.uncld.dev", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {10, 210, 0, 2}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"accept-en (truncated) 14:52:00.291 [info] {"source":"oban","duration":626,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 14:52:13.410 [info] {"source":"oban","duration":1990,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:52:22.115 [info] {"args":{"id":19},"id":203156,"meta":{},"system_time":1767412342115582418,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 14:52:22.116 [debug] QUERY OK source="sources" db=0.4ms idle=1014.4ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [19] 14:52:22.117 [debug] QUERY OK source="settings" db=0.3ms idle=332.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:52:22.118 [debug] QUERY OK source="media_profiles" db=0.4ms idle=333.5ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 14:52:22.118 [debug] QUERY OK source="settings" db=0.3ms idle=10.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:52:22.119 [debug] Fetching recent media IDs from YouTube API for playlist: UUaYhH3F6iB3KyW3afTHk5XA 14:52:22.119 [debug] QUERY OK source="settings" db=0.2ms idle=3.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:52:22.119 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 14:52:22.678 [debug] QUERY OK source="media_items" db=2.4ms queue=0.1ms idle=558.8ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND m0."media_id" IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [19, "mUlKcxGWvrQ", "ydfuNK4wSik", "x6cNQykYdEM", "SvyVS7zvquc", "l4O2F-1BWVI", "LYXADYUSTSg", "HpL40FdPGqk", "Wre5VWHxSug", "PdUu77SAH0I", "VCflrtok9hQ", "haEa6h8Ptf0", "c_-f7G9VSPw", "7rSLcNznix4", "OLXr-B-xwY8", "X05FPJq6_Oc", "kuL-trgOvq8", "WpBEifN8BYw", "YETks_YtraY", "bwKKd4N8Q2E", "PpNfOqbt0a8", "GyifuiQ6p48", "SkoFBCBASto", "-GNid2M6IC8", "muehDmLuJSw", "nBx5yssxPDk", "Q6vzDo6it9o", "AH9Z6_PlKhA", "dZfthyLyjDk", "j9UuSMaqX9Q", "jmoVFLUvyD0", "tKm_pnNEDsc", "boVAiizeh1M", "FNtBH6k7Jmo", "MDhN5WGOJ_o", "P-UQX5L_Ff0", "kys3lRzOOEY", "VDHSC2Dl8f0", "JU0uEdyPKlE", "0sSWAzq7rjc", "HOLXNrjWeuo"] 14:52:22.683 [debug] QUERY OK source="media_items" db=1.8ms idle=563.5ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [19] 14:52:22.687 [debug] QUERY OK source="tasks" db=0.9ms idle=567.0ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [203180, 19, ~U[2026-01-03 03:52:22Z], ~U[2026-01-03 03:52:22Z]] 14:52:22.688 [info] {"args":{"id":19},"id":203156,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":572177,"event":"job:stop","queue_time":317467,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 14:52:23.120 [info] {"args":{"id":23},"id":203157,"meta":{},"system_time":1767412343120138438,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 14:52:23.121 [debug] QUERY OK source="sources" db=0.9ms idle=432.8ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [23] 14:52:23.122 [debug] QUERY OK source="settings" db=0.4ms idle=432.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:52:23.123 [debug] QUERY OK source="media_profiles" db=0.4ms idle=425.4ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 14:52:23.123 [debug] QUERY OK source="settings" db=0.3ms idle=10.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:52:23.123 [debug] Fetching recent media IDs from YouTube API for playlist: UUSHvlfXUGYGWmDBg-afA5Bg 14:52:23.124 [debug] QUERY OK source="settings" db=0.2ms idle=3.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:52:23.124 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 14:52:23.448 [debug] QUERY OK source="media_items" db=2.5ms idle=324.4ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND m0."media_id" IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [23, "QASZbKPkS08", "pr7MMAFzHe8", "DG0BSdc6kKg", "o7DJZCU8q34", "G5A2QGwRmS4", "PER4GK9LCTA", "GzIS1WZFKtc", "24P4MFV-HrM", "6x6df3uagb4", "vALU9LhFKhE", "KF1grNBv5hU", "SLSPmp8-tXE", "53liPfHBgYQ", "zykmoM0qjbA", "boyfPk5qdBM", "H2VYuo7yb2o", "75_mYLpHDr4", "PSnlGB9aKVI", "vFBFSi2XqrQ", "X2z1ugOwR2A", "ePV6FKD1J9U", "ipxj_tl_6XY", "6l9-ctzSbCo", "xu3DTyCW3Yk", "wpAt0QaSk7U", "NXy9Sg0KIMY", "ml5AG_Q0y6w", "h_Uq6-e06y8", "37_rLteuwG4", "QCbf0kOJ8lA"] 14:52:23.452 [debug] QUERY OK source="media_items" db=1.3ms idle=328.6ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [23] 14:52:23.457 [debug] QUERY OK source="tasks" db=0.7ms idle=332.3ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [203181, 23, ~U[2026-01-03 03:52:23Z], ~U[2026-01-03 03:52:23Z]] 14:52:23.458 [info] {"args":{"id":23},"id":203157,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":337082,"event":"job:stop","queue_time":527664,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 14:52:24.123 [info] {"args":{"id":25},"id":203158,"meta":{},"system_time":1767412344123528850,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 14:52:24.124 [debug] QUERY OK source="sources" db=0.8ms queue=0.1ms idle=666.7ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [25] 14:52:24.125 [debug] QUERY OK source="settings" db=0.5ms idle=667.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:52:24.126 [debug] QUERY OK source="media_profiles" db=0.5ms idle=660.0ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 14:52:24.127 [debug] QUERY OK source="settings" db=0.5ms idle=11.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:52:24.127 [debug] Fetching recent media IDs from YouTube API for playlist: UUWstkeBSSIEgw6n5qnlXXuA 14:52:24.128 [debug] QUERY OK source="settings" db=0.4ms idle=4.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:52:24.128 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 14:52:24.456 [debug] QUERY OK source="media_items" db=1.8ms idle=329.5ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND m0."media_id" IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [25, "_sYSZI--9TA", "T7P86y4vYKs", "qWpf9ysgE04", "81v7r86tRRE", "a3LYS6jzPKA", "o5UKHwwdhmA", "6CCxzLKCHYA", "VONzFNo8uW4", "jJUysp-6qBs", "3KzmAquL3e4", "5cgK_MdFz7s", "bHpsXfutTFY", "kVhFNQj86Ng", "nyd40ZDhRw4"] 14:52:24.459 [debug] QUERY OK source="media_items" db=1.7ms idle=331.5ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [25] 14:52:24.464 [debug] QUERY OK source="tasks" db=1.3ms idle=335.4ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [203182, 25, ~U[2026-01-03 03:52:24Z], ~U[2026-01-03 03:52:24Z]] 14:52:24.466 [info] {"args":{"id":25},"id":203158,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":341467,"event":"job:stop","queue_time":537147,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 14:52:25.127 [info] {"args":{"id":17},"id":203159,"meta":{},"system_time":1767412345127221351,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 14:52:25.128 [debug] QUERY OK source="sources" db=0.8ms idle=662.7ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [17] 14:52:25.129 [debug] QUERY OK source="settings" db=0.8ms idle=662.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:52:25.130 [debug] QUERY OK source="media_profiles" db=0.7ms idle=656.2ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 14:52:25.131 [debug] QUERY OK source="settings" db=0.4ms idle=11.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:52:25.131 [debug] Fetching recent media IDs from YouTube API for playlist: UUEIwxahdLz7bap-VDs9h35A 14:52:25.132 [debug] QUERY OK source="settings" db=0.3ms idle=4.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:52:25.132 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 14:52:25.532 [debug] QUERY OK source="media_items" db=5.2ms idle=398.6ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND m0."media_id" IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [17, "kuMUquaeE6g", "-NzfTE8RI4w", "2eiYALLYBFE", "J_vXK9uvRf4", "tRDxBwverlI", "ymlNErMdI2k", "hM1l19H0tX8", "qg01MgiVT9k", "a3l6FdpltbQ", "NtZaP8VMv0c", "ayicYezINas", "zoTuSOEOvPw", "U7NHNT3M-tw", "B_PCZiNlmPw", "5glksNTKkZI", "iDsb-pxE3fA", "7PJi9KSDVbQ", "CfhsW1kaa2Q", "pleHURTV6fU", "T47s4L1Wje4", "LLlghvxVoH0", "K4542wtX8B4", "rf-efIZI_Dg", "OXvdwc6NDqM", "nGEHUbTtpPY", "0FybegjTkgw", "3TgdCWBV0pg", "Qjd4CREfYbo", "pqnyUemUDF4", "6-FQSEVc_cs", "BvoDuNZ9gLA", "AjJfefo41M8", "dJSGJ1-9XWw", "Mcg9GcilBfU", "MQSwyrjTV2M", "o-dZKBwbsis", "matUCqoiSGk", "0_VdGzEk5-M", "PAOpkv0fpik", "VdwSMytC7y4", "tw5tQPm-B00", "vkD3-msLIHg", "INq7pAmaUuk", "mfTVxFapdLw", "kY2YeM5fNDw", "lkWRiks6luc", "yiCM_i8r4RM", "XzBMFsZT5gM", "dKN6XatdVkY", ...] 14:52:25.540 [debug] QUERY OK source="media_items" db=6.0ms idle=404.2ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [17] 14:52:25.544 [debug] QUERY OK source="tasks" db=0.6ms idle=410.8ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [203183, 17, ~U[2026-01-03 03:52:25Z], ~U[2026-01-03 03:52:25Z]] 14:52:25.545 [info] {"args":{"id":17},"id":203159,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":416876,"event":"job:stop","queue_time":509230,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 14:52:43.414 [info] {"source":"oban","duration":2284,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:52:59.316 [info] GET /sources/13/media/58783/force_download 14:52:59.317 [debug] QUERY OK source="settings" db=0.5ms queue=0.1ms idle=533.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:52:59.318 [debug] QUERY OK source="settings" db=0.4ms queue=0.1ms idle=534.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:52:59.318 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 14:52:59.319 [error] #PID<0.11537.0> running PinchflatWeb.Endpoint (connection #PID<0.11536.0>, stream id 1) terminated Server: pinchflat.uiau7e.uncld.dev:80 (http) Request: GET /sources/13/media/58783/force_download ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/13/media/58783/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.11536.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/13/media/58783/force_download", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 43460}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "from" => "gptbot(at)openai.com", "host" => "pinchflat.uiau7e.uncld.dev", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.3; +https://openai.com/gptbot)", "via" => "2.0 Caddy", "x-forwarded-for" => "74.7.227.183", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https", "x-openai-host-hash" => "454925582" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.uiau7e.uncld.dev", method: "GET", owner: #PID<0.11537.0>, params: %{}, path_info: ["sources", "13", "media", "58783", "force_download"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.uiau7e.uncld.dev", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {10, 210, 0, 2}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"accept-encoding", "gzip, br, deflate"}, {"from", "gptbot(at)openai.com"}, {"host", "pinchflat.uiau7e.uncld.dev"}, {"user-agent", "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.3; +https://openai.com/gptbot)"}, {"via", "2.0 Caddy"}, {"x-forwarded-for", "74.7.227.183"}, {"x-forwarded-host", "pinchflat.uiau7e.uncld.dev"}, {"x-forwarded-proto", "https"}, {"x-openai-host-hash", "454925582"} ], request_path: "/sources/13/media/58783/force_download", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GIccMeDPrQHS1-oAAjZB"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.11536.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/13/media/58783/force_download", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 43460}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "from" => "gptbot(at)openai.com", "host" => "pinchflat.uiau7e.uncld.dev", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.3; +https://openai.com/gptbot)", "via" => "2.0 Caddy", "x-forwarded-for" => "74.7.227.183", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https", "x-openai-host-hash" => "454925582" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/13/media/58783/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.11536.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/13/media/58783/force_download", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 43460}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "from" => "gptbot(at)openai.com", "host" => "pinchflat.uiau7e.uncld.dev", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.3; +https://openai.com/gptbot)", "via" => "2.0 Caddy", "x-forwarded-for" => "74.7.227.183", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https", "x-openai-host-hash" => "454925582" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.uiau7e.uncld.dev", method: "GET", owner: #PID<0.11537.0>, params: %{}, path_info: ["sources", "13", "media", "58783", "force_download"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.uiau7e.uncld.dev", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {10, 210, 0, 2}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"accept-en (truncated) 14:53:00.293 [info] {"source":"oban","duration":416,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 14:53:13.417 [info] {"source":"oban","duration":2552,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:53:38.341 [info] GET /sources/7 14:53:38.341 [debug] Processing with PinchflatWeb.Sources.SourceController.show/2 Parameters: %{"id" => "7"} Pipelines: [:browser] 14:53:38.344 [debug] QUERY OK source="sources" db=1.0ms queue=0.3ms idle=1558.7ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [7] 14:53:38.346 [debug] QUERY OK source="media_profiles" db=1.1ms queue=0.2ms idle=1560.7ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 14:53:38.348 [debug] QUERY OK source="tasks" db=1.4ms queue=0.3ms idle=1562.8ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at" FROM "tasks" AS t0 INNER JOIN "oban_jobs" AS o1 ON o1."id" = t0."job_id" WHERE (t0."source_id" = ?) AND (o1."state" IN (?,?,?,?)) [7, "executing", "available", "scheduled", "retryable"] 14:53:38.349 [debug] QUERY OK source="oban_jobs" db=0.5ms queue=0.1ms idle=1002.8ms SELECT o0."id", o0."state", o0."queue", o0."worker", o0."args", o0."meta", o0."tags", o0."errors", o0."attempt", o0."attempted_by", o0."max_attempts", o0."priority", o0."attempted_at", o0."cancelled_at", o0."completed_at", o0."discarded_at", o0."inserted_at", o0."scheduled_at", o0."id" FROM "oban_jobs" AS o0 WHERE (o0."id" IN (?,?)) [203164, 202154] 14:53:38.350 [debug] QUERY OK source="settings" db=0.3ms queue=0.1ms idle=6.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:53:38.351 [debug] QUERY OK source="settings" db=0.3ms idle=4.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:53:38.352 [debug] QUERY OK source="settings" db=0.3ms queue=0.1ms idle=3.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:53:38.356 [debug] QUERY OK source="sources" db=0.4ms idle=5.8ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [7] 14:53:38.360 [debug] QUERY OK source="media_items" db=4.0ms idle=6.3ms SELECT count(m0."id") FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [7] 14:53:38.365 [debug] QUERY OK source="media_items" db=3.4ms queue=0.1ms idle=10.7ms SELECT m0."id", m0."title", m0."uploaded_at", m0."prevent_download", m0."last_error" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) ORDER BY m0."uploaded_at" DESC LIMIT ? OFFSET ? [7, 10, 0] 14:53:38.367 [debug] QUERY OK source="sources" db=0.3ms queue=0.1ms idle=16.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [7] 14:53:38.369 [debug] QUERY OK source="media_items" db=0.9ms queue=0.1ms idle=15.6ms SELECT count(m0."id") FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND NOT (m0."media_filepath" IS NULL)) [7] 14:53:38.372 [debug] QUERY OK source="media_items" db=3.1ms queue=0.1ms idle=13.4ms SELECT m0."id", m0."title", m0."uploaded_at", m0."prevent_download", m0."last_error" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND NOT (m0."media_filepath" IS NULL)) ORDER BY m0."uploaded_at" DESC LIMIT ? OFFSET ? [7, 10, 0] 14:53:38.375 [debug] QUERY OK source="sources" db=0.3ms idle=14.4ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [7] 14:53:38.377 [debug] QUERY OK source="media_items" db=0.6ms idle=11.2ms SELECT count(m0."id") FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds"))))) [7] 14:53:38.386 [debug] QUERY OK source="media_items" db=9.5ms idle=9.3ms SELECT m0."id", m0."title", m0."uploaded_at", m0."prevent_download", m0."last_error" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds"))))) ORDER BY m0."uploaded_at" DESC LIMIT ? OFFSET ? [7, 10, 0] 14:53:38.388 [info] Sent 200 in 46ms 14:53:38.842 [info] GET /sources/3 14:53:38.842 [debug] Processing with PinchflatWeb.Sources.SourceController.show/2 Parameters: %{"id" => "3"} Pipelines: [:browser] 14:53:38.844 [debug] QUERY OK source="sources" db=0.9ms queue=0.2ms idle=474.2ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [3] 14:53:38.846 [debug] QUERY OK source="media_profiles" db=0.7ms queue=0.1ms idle=472.5ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 14:53:38.849 [debug] QUERY OK source="tasks" db=1.9ms queue=0.2ms idle=471.1ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at" FROM "tasks" AS t0 INNER JOIN "oban_jobs" AS o1 ON o1."id" = t0."job_id" WHERE (t0."source_id" = ?) AND (o1."state" IN (?,?,?,?)) [3, "executing", "available", "scheduled", "retryable"] 14:53:38.850 [debug] QUERY OK source="oban_jobs" db=0.7ms queue=0.1ms idle=472.5ms SELECT o0."id", o0."state", o0."queue", o0."worker", o0."args", o0."meta", o0."tags", o0."errors", o0."attempt", o0."attempted_by", o0."max_attempts", o0."priority", o0."attempted_at", o0."cancelled_at", o0."completed_at", o0."discarded_at", o0."inserted_at", o0."scheduled_at", o0."id" FROM "oban_jobs" AS o0 WHERE (o0."id" IN (?,?)) [203166, 202160] 14:53:38.851 [debug] QUERY OK source="settings" db=0.4ms queue=0.1ms idle=464.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:53:38.852 [debug] QUERY OK source="settings" db=0.5ms queue=0.1ms idle=7.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:53:38.854 [debug] QUERY OK source="settings" db=0.4ms queue=0.1ms idle=7.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:53:38.858 [debug] QUERY OK source="sources" db=0.5ms idle=9.1ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [3] 14:53:38.865 [debug] QUERY OK source="media_items" db=6.1ms idle=8.9ms SELECT count(m0."id") FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [3] 14:53:38.873 [debug] QUERY OK source="media_items" db=7.2ms queue=0.1ms idle=14.2ms SELECT m0."id", m0."title", m0."uploaded_at", m0."prevent_download", m0."last_error" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) ORDER BY m0."uploaded_at" DESC LIMIT ? OFFSET ? [3, 10, 0] 14:53:38.875 [debug] QUERY OK source="sources" db=0.4ms idle=21.8ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [3] 14:53:38.876 [debug] QUERY OK source="media_items" db=0.5ms queue=0.1ms idle=21.2ms SELECT count(m0."id") FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND NOT (m0."media_filepath" IS NULL)) [3] 14:53:38.879 [debug] QUERY OK source="media_items" db=3.2ms idle=17.5ms SELECT m0."id", m0."title", m0."uploaded_at", m0."prevent_download", m0."last_error" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND NOT (m0."media_filepath" IS NULL)) ORDER BY m0."uploaded_at" DESC LIMIT ? OFFSET ? [3, 10, 0] 14:53:38.882 [debug] QUERY OK source="sources" db=0.3ms idle=16.5ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [3] 14:53:38.885 [debug] QUERY OK source="media_items" db=1.7ms idle=9.7ms SELECT count(m0."id") FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds"))))) [3] 14:53:38.889 [debug] QUERY OK source="media_items" db=4.1ms idle=10.2ms SELECT m0."id", m0."title", m0."uploaded_at", m0."prevent_download", m0."last_error" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds"))))) ORDER BY m0."uploaded_at" DESC LIMIT ? OFFSET ? [3, 10, 0] 14:53:38.892 [info] Sent 200 in 49ms 14:53:39.341 [info] GET /sources/21/force_metadata_refresh 14:53:39.343 [debug] QUERY OK source="settings" db=0.7ms queue=0.2ms idle=466.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:53:39.345 [debug] QUERY OK source="settings" db=0.7ms queue=0.2ms idle=464.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:53:39.345 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 14:53:39.346 [error] #PID<0.11544.0> running PinchflatWeb.Endpoint (connection #PID<0.11540.0>, stream id 4) terminated Server: pinchflat.suranyami.com:80 (http) Request: GET /sources/21/force_metadata_refresh ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/21/force_metadata_refresh (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.11540.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/21/force_metadata_refresh", host: "pinchflat.suranyami.com", peer: {{10, 210, 0, 2}, 55966}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, zstd, deflate", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYaU9VNjh0dkFnVUlhb0JPLUVZdk5HWk9a.z5DbTX4GLWm8Bj25sOBgtXfGlSlt0avocJQX2OWSsuE", "host" => "pinchflat.suranyami.com", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)", "via" => "2.0 Caddy", "x-forwarded-for" => "216.73.216.55", "x-forwarded-host" => "pinchflat.suranyami.com", "x-forwarded-proto" => "https" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 4, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{ "_pinchflat_key" => "SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYaU9VNjh0dkFnVUlhb0JPLUVZdk5HWk9a.z5DbTX4GLWm8Bj25sOBgtXfGlSlt0avocJQX2OWSsuE" }, halted: false, host: "pinchflat.suranyami.com", method: "GET", owner: #PID<0.11544.0>, params: %{}, path_info: ["sources", "21", "force_metadata_refresh"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.suranyami.com", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {10, 210, 0, 2}, req_cookies: %{ "_pinchflat_key" => "SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYaU9VNjh0dkFnVUlhb0JPLUVZdk5HWk9a.z5DbTX4GLWm8Bj25sOBgtXfGlSlt0avocJQX2OWSsuE" }, req_headers: [ {"accept", "*/*"}, {"accept-encoding", "gzip, br, zstd, deflate"}, {"cookie", "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYaU9VNjh0dkFnVUlhb0JPLUVZdk5HWk9a.z5DbTX4GLWm8Bj25sOBgtXfGlSlt0avocJQX2OWSsuE"}, {"host", "pinchflat.suranyami.com"}, {"user-agent", "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)"}, {"via", "2.0 Caddy"}, {"x-forwarded-for", "216.73.216.55"}, {"x-forwarded-host", "pinchflat.suranyami.com"}, {"x-forwarded-proto", "https"} ], request_path: "/sources/21/force_metadata_refresh", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GIccOzJ4gg_K6g0AAjih"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.11540.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/21/force_metadata_refresh", host: "pinchflat.suranyami.com", peer: {{10, 210, 0, 2}, 55966}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, zstd, deflate", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYaU9VNjh0dkFnVUlhb0JPLUVZdk5HWk9a.z5DbTX4GLWm8Bj25sOBgtXfGlSlt0avocJQX2OWSsuE", "host" => "pinchflat.suranyami.com", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)", "via" => "2.0 Caddy", "x-forwarded-for" => "216.73.216.55", "x-forwarded-host" => "pinchflat.suranyami.com", "x-forwarded-proto" => "https" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 4, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/21/force_metadata_refresh (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.11540.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/21/force_metadata_refresh", host: "pinchflat.suranyami.com", peer: {{10, 210, 0, 2}, 55966}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, zstd, deflate", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYaU9VNjh0dkFnVUlhb0JPLUVZdk5HWk9a.z5DbTX4GLWm8Bj25sOBgtXfGlSlt0avocJQX2OWSsuE", "host" => "pinchflat.suranyami.com", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)", "via" => "2.0 Caddy", "x-forwarded-for" => "216.73.216.55", "x-forwarded-host" => "pinchflat.suranyami.com", "x-forwarded-proto" => "https" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 4, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{ "_pinchflat_key" => "SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYaU9VNjh0dkFnVUlhb0JPLUVZdk5HWk9a.z5DbTX4GLWm8Bj25sOBgtXfGlSlt0avocJQX2OWSsuE" }, halted: false, host: "pinchflat.suranyami.com", method: "GET", owner: #PID<0.11544.0>, params: %{}, path_info: ["sources", "21", "force_metadata_refresh"], path_params: %{}, port: 80, (truncated) 14:53:39.844 [info] GET /sources/21/edit 14:53:39.845 [debug] Processing with PinchflatWeb.Sources.SourceController.edit/2 Parameters: %{"id" => "21"} Pipelines: [:browser] 14:53:39.847 [debug] QUERY OK source="sources" db=0.6ms queue=0.1ms idle=961.2ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [21] 14:53:39.848 [debug] QUERY OK source="media_profiles" db=0.4ms queue=0.1ms idle=957.8ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at" FROM "media_profiles" AS m0 ORDER BY m0."name" [] 14:53:39.848 [debug] QUERY OK source="settings" db=0.4ms idle=504.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:53:39.849 [debug] QUERY OK source="settings" db=0.5ms idle=504.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:53:39.851 [debug] QUERY OK source="settings" db=0.4ms queue=0.1ms idle=497.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:53:39.860 [info] Sent 200 in 15ms 14:53:43.421 [info] {"source":"oban","duration":3509,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:53:52.405 [info] {"args":{"id":7},"id":203164,"meta":{},"system_time":1767412432405787542,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 14:53:52.407 [debug] QUERY OK source="sources" db=1.0ms idle=622.1ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [7] 14:53:52.408 [debug] QUERY OK source="settings" db=0.8ms idle=623.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:53:52.409 [debug] QUERY OK source="media_profiles" db=0.8ms idle=624.5ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 14:53:52.410 [debug] QUERY OK source="settings" db=0.6ms idle=11.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:53:52.410 [debug] Fetching recent media IDs from YouTube API for playlist: UUwnKziETDbHJtx78nIkfYug 14:53:52.410 [debug] QUERY OK source="settings" db=0.3ms idle=4.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:53:52.411 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 14:53:52.762 [debug] QUERY OK source="media_items" db=5.9ms idle=349.4ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND m0."media_id" IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [7, "mC5NdpSMDks", "ccV3u3D9ONE", "cVCDjEfPzII", "n0X2rqzKTgM", "dcuCvRNqmpY", "GG1qX8jHKGo", "k9wkleHFvo0", "CWoYVlMuUNQ", "xlfeieH4z38", "eZM2Ik-FHEU", "CtcTG8-qzbA", "6Mmj7mf1qlg", "InwVO9qBjqs", "1Hp-W2bpPrw", "VtE5sTpkn7k", "8dOJypt2F70", "Evm4t4prtWo", "taLzgvbrnv0", "rgCrnyf5JEI", "PHhc-48JT3U", "vFKjpNNjNGw", "VJQlOI70ubw", "E5cfNq0DO90", "DNBGSsZatbY", "pna1NyaHTls", "CUHao-vA98g", "cPN9BJe_RQw", "rCBt4XgCX-0", "f4g6KKGMmEI", "P_I5Jsc3xRw", "fPaU2l7RktM", "0PVwt01b6fs", "0qMDM4Y4Hwo", "Ld285PDsHvs", "p1mQC71wplA", "9k5JhKK6WlA", "WPxrifmtlQI", "nVNBmK7a1y8", "QDnMYztaxfI", "gxsaWhXG1Gg", "RMtkKiyrXic", "JKlJ6OW67Bk", "Sjmb8O-fRWI", "qZhD4G7ENSY", "OTWDzMjgsEY", "Y_eCu_pW6-4", "DplgNsjOPRg", "l6hHI3AVoYM", "joAhvj7dfsc", ...] 14:53:52.774 [debug] QUERY OK source="media_items" db=8.5ms idle=357.0ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [7] 14:53:52.782 [debug] QUERY OK source="tasks" db=0.8ms idle=370.8ms INSERT INTO "tasks" ("job_id","media_item_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [203184, 8350, ~U[2026-01-03 03:53:52Z], ~U[2026-01-03 03:53:52Z]] 14:53:52.790 [debug] QUERY OK source="tasks" db=0.8ms idle=8.5ms INSERT INTO "tasks" ("job_id","media_item_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [203185, 8380, ~U[2026-01-03 03:53:52Z], ~U[2026-01-03 03:53:52Z]] 14:53:52.792 [info] {"args":{"id":8350},"id":203184,"meta":{},"system_time":1767412432792315499,"max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 14:53:52.792 [info] {"args":{"id":8380},"id":203185,"meta":{},"system_time":1767412432792411173,"max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 14:53:52.794 [debug] QUERY OK source="media_items" db=1.1ms idle=3.4ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [8380] 14:53:52.794 [info] User scripts lifecyle file either not present or is empty. Skipping. 14:53:52.794 [debug] QUERY OK source="media_items" db=1.9ms idle=4.9ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [8350] 14:53:52.795 [info] User scripts lifecyle file either not present or is empty. Skipping. 14:53:52.795 [debug] QUERY OK source="sources" db=1.1ms idle=4.2ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [7] 14:53:52.796 [debug] QUERY OK source="sources" db=0.7ms idle=2.9ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [7] 14:53:52.797 [debug] QUERY OK source="media_profiles" db=0.9ms queue=0.2ms idle=2.3ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 14:53:52.797 [debug] QUERY OK source="media_profiles" db=1.2ms queue=0.1ms idle=1.5ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 14:53:52.799 [debug] QUERY OK source="media_items" db=1.3ms idle=2.2ms SELECT 1 FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) LIMIT 1 [8350] 14:53:52.800 [debug] QUERY OK source="media_items" db=2.0ms queue=0.1ms idle=2.0ms SELECT 1 FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) LIMIT 1 [8380] 14:53:52.800 [debug] QUERY OK source="tasks" db=0.4ms idle=2.4ms INSERT INTO "tasks" ("job_id","media_item_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [203186, 8401, ~U[2026-01-03 03:53:52Z], ~U[2026-01-03 03:53:52Z]] 14:53:52.801 [debug] QUERY OK source="media_metadata" db=0.4ms idle=3.1ms SELECT m0."id", m0."metadata_filepath", m0."thumbnail_filepath", m0."media_item_id", m0."inserted_at", m0."updated_at", m0."media_item_id" FROM "media_metadata" AS m0 WHERE (m0."media_item_id" = ?) [8350] 14:53:52.801 [debug] QUERY OK source="media_metadata" db=0.3ms idle=2.0ms SELECT m0."id", m0."metadata_filepath", m0."thumbnail_filepath", m0."media_item_id", m0."inserted_at", m0."updated_at", m0."media_item_id" FROM "media_metadata" AS m0 WHERE (m0."media_item_id" = ?) [8380] 14:53:52.802 [debug] QUERY OK source="media_profiles" db=0.5ms idle=1.4ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 14:53:52.802 [debug] QUERY OK source="media_profiles" db=1.0ms idle=1.5ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 14:53:52.803 [debug] QUERY OK source="settings" db=0.2ms idle=1.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:53:52.803 [debug] QUERY OK source="settings" db=0.2ms idle=1.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:53:52.804 [debug] QUERY OK source="settings" db=0.4ms idle=0.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:53:52.804 [debug] QUERY OK source="settings" db=0.5ms idle=0.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:53:52.804 [debug] Running yt-dlp command for action: get_downloadable_status 14:53:52.805 [debug] Running yt-dlp command for action: get_downloadable_status 14:53:52.805 [debug] QUERY OK source="settings" db=0.2ms idle=1.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:53:52.805 [debug] QUERY OK source="settings" db=0.2ms idle=2.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:53:52.806 [debug] QUERY OK source="settings" db=0.3ms idle=1.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:53:52.806 [debug] QUERY OK source="settings" db=0.3ms idle=1.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:53:52.806 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=aCES82xfgdw --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/3c/e7/3ce7f49dce829356fe3308b45fb4b98ed231d826aefc6bd6ce32f1fddd7db534.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:53:52.807 [debug] QUERY OK source="settings" db=0.4ms queue=0.1ms idle=0.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:53:52.807 [debug] QUERY OK source="settings" db=0.2ms idle=1.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:53:52.808 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=bhkmFO8DikY --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/01/09/0109137c06487d7c1cecf88940458f0ed248045eb6245726a21c8b7f1cd19cef.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:53:52.810 [debug] QUERY OK source="tasks" db=0.7ms idle=3.0ms INSERT INTO "tasks" ("job_id","media_item_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [203187, 8418, ~U[2026-01-03 03:53:52Z], ~U[2026-01-03 03:53:52Z]] 14:53:52.814 [debug] QUERY OK source="tasks" db=0.8ms idle=4.6ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [203188, 7, ~U[2026-01-03 03:53:52Z], ~U[2026-01-03 03:53:52Z]] 14:53:52.815 [info] {"args":{"id":7},"id":203164,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":408530,"event":"job:stop","queue_time":467231,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 14:53:58.148 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=aCES82xfgdw --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/3c/e7/3ce7f49dce829356fe3308b45fb4b98ed231d826aefc6bd6ce32f1fddd7db534.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 1 with: ERROR: [youtube] aCES82xfgdw: Sign in to confirm your age. This video may be inappropriate for some users. Use --cookies-from-browser or --cookies for the authentication. See https://github.com/yt-dlp/yt-dlp/wiki/FAQ#how-do-i-pass-cookies-to-yt-dlp for how to manually pass cookies. Also see https://github.com/yt-dlp/yt-dlp/wiki/Extractors#exporting-youtube-cookies for tips on effectively exporting YouTube cookies 14:53:58.151 [debug] QUERY OK source="settings" db=0.3ms queue=0.4ms idle=1366.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:53:58.152 [debug] QUERY OK source="settings" db=0.3ms queue=0.2ms idle=1367.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:53:58.153 [debug] Running yt-dlp command for action: get_downloadable_status 14:53:58.156 [debug] QUERY OK source="settings" db=0.2ms queue=0.1ms idle=1371.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:53:58.157 [debug] QUERY OK source="settings" db=0.2ms queue=0.1ms idle=740.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:53:58.157 [debug] QUERY OK source="settings" db=0.2ms queue=0.1ms idle=373.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:53:58.158 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=aCES82xfgdw --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/7e/59/7e5946f684914fbce6eea2881aca3ef48116832000819322a7425609d4284b95.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:53:58.282 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=bhkmFO8DikY --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/01/09/0109137c06487d7c1cecf88940458f0ed248045eb6245726a21c8b7f1cd19cef.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 1 with: ERROR: [youtube] bhkmFO8DikY: Sign in to confirm your age. This video may be inappropriate for some users. Use --cookies-from-browser or --cookies for the authentication. See https://github.com/yt-dlp/yt-dlp/wiki/FAQ#how-do-i-pass-cookies-to-yt-dlp for how to manually pass cookies. Also see https://github.com/yt-dlp/yt-dlp/wiki/Extractors#exporting-youtube-cookies for tips on effectively exporting YouTube cookies 14:53:58.284 [debug] QUERY OK source="settings" db=0.4ms queue=0.1ms idle=132.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:53:58.285 [debug] QUERY OK source="settings" db=0.4ms queue=0.1ms idle=132.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:53:58.286 [debug] Running yt-dlp command for action: get_downloadable_status 14:53:58.288 [debug] QUERY OK source="settings" db=0.2ms idle=132.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:53:58.289 [debug] QUERY OK source="settings" db=0.3ms queue=0.1ms idle=132.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:53:58.290 [debug] QUERY OK source="settings" db=0.3ms queue=0.1ms idle=132.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:53:58.291 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=bhkmFO8DikY --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/bd/a5/bda5b8e8ba819d810c0ec997bbade6217a7fed991885d2316320334a188f92ac.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:53:59.342 [info] GET /sources/17/media/35338/force_download 14:53:59.344 [debug] QUERY OK source="settings" db=0.6ms queue=0.1ms idle=1058.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:53:59.345 [debug] QUERY OK source="settings" db=0.5ms idle=1055.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:53:59.345 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 14:53:59.346 [error] #PID<0.11558.0> running PinchflatWeb.Endpoint (connection #PID<0.11557.0>, stream id 1) terminated Server: pinchflat.uiau7e.uncld.dev:80 (http) Request: GET /sources/17/media/35338/force_download ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/17/media/35338/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.11557.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/17/media/35338/force_download", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 49864}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "from" => "gptbot(at)openai.com", "host" => "pinchflat.uiau7e.uncld.dev", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.3; +https://openai.com/gptbot)", "via" => "2.0 Caddy", "x-forwarded-for" => "74.7.227.183", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https", "x-openai-host-hash" => "454925582" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.uiau7e.uncld.dev", method: "GET", owner: #PID<0.11558.0>, params: %{}, path_info: ["sources", "17", "media", "35338", "force_download"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.uiau7e.uncld.dev", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {10, 210, 0, 2}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"accept-encoding", "gzip, br, deflate"}, {"from", "gptbot(at)openai.com"}, {"host", "pinchflat.uiau7e.uncld.dev"}, {"user-agent", "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.3; +https://openai.com/gptbot)"}, {"via", "2.0 Caddy"}, {"x-forwarded-for", "74.7.227.183"}, {"x-forwarded-host", "pinchflat.uiau7e.uncld.dev"}, {"x-forwarded-proto", "https"}, {"x-openai-host-hash", "454925582"} ], request_path: "/sources/17/media/35338/force_download", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GIccP9qiebZlykkAAjmB"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.11557.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/17/media/35338/force_download", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 49864}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "from" => "gptbot(at)openai.com", "host" => "pinchflat.uiau7e.uncld.dev", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.3; +https://openai.com/gptbot)", "via" => "2.0 Caddy", "x-forwarded-for" => "74.7.227.183", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https", "x-openai-host-hash" => "454925582" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/17/media/35338/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.11557.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/17/media/35338/force_download", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 49864}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "from" => "gptbot(at)openai.com", "host" => "pinchflat.uiau7e.uncld.dev", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.3; +https://openai.com/gptbot)", "via" => "2.0 Caddy", "x-forwarded-for" => "74.7.227.183", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https", "x-openai-host-hash" => "454925582" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.uiau7e.uncld.dev", method: "GET", owner: #PID<0.11558.0>, params: %{}, path_info: ["sources", "17", "media", "35338", "force_download"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.uiau7e.uncld.dev", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {10, 210, 0, 2}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"accept-en (truncated) 14:54:00.294 [info] {"source":"oban","duration":602,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 14:54:00.436 [info] {"args":{"id":24},"id":203165,"meta":{},"system_time":1767412440436560933,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 14:54:00.437 [debug] QUERY OK source="sources" db=0.5ms idle=652.8ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [24] 14:54:00.438 [debug] QUERY OK source="settings" db=0.3ms idle=653.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:54:00.439 [debug] QUERY OK source="media_profiles" db=0.3ms idle=144.1ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 14:54:00.440 [debug] QUERY OK source="settings" db=0.3ms idle=10.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:54:00.440 [debug] Fetching recent media IDs from YouTube API for playlist: UUNTjSZfAK117b2kFGNCJfdA 14:54:00.441 [debug] QUERY OK source="settings" db=0.3ms idle=4.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:54:00.441 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 14:54:00.828 [debug] QUERY OK source="media_items" db=3.2ms idle=386.4ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND m0."media_id" IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [24, "2J48c2sukbo", "zq9gpqgWFv8", "EWdphas_OP4", "-U2sQ3e3R-0", "XdytKwHuG_8", "t-hori2Io14", "Xbemvi42Ngs", "91m4MQw_sZI", "GfUIbPqAMQs", "4VpVt3zdvL8", "q6Kd5C7O-F8", "EV6DSqTOXM0", "mMvfBUNNKIY", "C215grXAMCk", "_x6TE7hbE1k", "vycMxLco0a0", "lJWhisaNv8E", "4Blxc8mVzQs", "ztqcWc5aaks", "0Dvn039qD8I", "Vx69evZOEAE", "4dzZ44-xVds", "Rews5WNxiNk", "f-BFFWzh9uE", "RfJSMWHO0tY", "gMeUOURvDP8", "LEiL1np9sSM", "F-QeDtQ8Gy4", "9FSIF281OAo", "Shav52BfzWk", "dsCfQ3y5tHQ", "0rpt5sMb7cw", "Fe7Y152ak3Y", "HEuablkqrCg", "BRUTYHBJ_Z4", "gpaV4bgEG-g", "ppjFdEbIS4g", "lEhEMRA17bg", "tpIXmmV4ib4", "LBYQ_NLVKCw", "JsdM3k3QiPc", "TNmSVjGyZx0", "OMVYZziNjhc", "uyfyFRvng3c", "YFBg5NNEW4g", "IkZe4pXDv0k", "ZT0in30U-ug", "kqDqSLOuxmM", "ZgLsNSWN46o", ...] 14:54:00.834 [debug] QUERY OK source="media_items" db=1.2ms idle=394.5ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [24] 14:54:00.838 [debug] QUERY OK source="tasks" db=0.8ms idle=396.3ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [203189, 24, ~U[2026-01-03 03:54:00Z], ~U[2026-01-03 03:54:00Z]] 14:54:00.839 [info] {"args":{"id":24},"id":203165,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":401801,"event":"job:stop","queue_time":486797,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 14:54:03.663 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=aCES82xfgdw --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/7e/59/7e5946f684914fbce6eea2881aca3ef48116832000819322a7425609d4284b95.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 1 with: ERROR: [youtube] aCES82xfgdw: Sign in to confirm your age. This video may be inappropriate for some users. Use --cookies-from-browser or --cookies for the authentication. See https://github.com/yt-dlp/yt-dlp/wiki/FAQ#how-do-i-pass-cookies-to-yt-dlp for how to manually pass cookies. Also see https://github.com/yt-dlp/yt-dlp/wiki/Extractors#exporting-youtube-cookies for tips on effectively exporting YouTube cookies 14:54:03.664 [error] yt-dlp download error for media item #8350: "ERROR: [youtube] aCES82xfgdw: Sign in to confirm your age. This video may be inappropriate for some users. Use --cookies-from-browser or --cookies for the authentication. See https://github.com/yt-dlp/yt-dlp/wiki/FAQ#how-do-i-pass-cookies-to-yt-dlp for how to manually pass cookies. Also see https://github.com/yt-dlp/yt-dlp/wiki/Extractors#exporting-youtube-cookies for tips on effectively exporting YouTube cookies\n" 14:54:03.664 [error] yt-dlp download will not be retried: "ERROR: [youtube] aCES82xfgdw: Sign in to confirm your age. This video may be inappropriate for some users. Use --cookies-from-browser or --cookies for the authentication. See https://github.com/yt-dlp/yt-dlp/wiki/FAQ#how-do-i-pass-cookies-to-yt-dlp for how to manually pass cookies. Also see https://github.com/yt-dlp/yt-dlp/wiki/Extractors#exporting-youtube-cookies for tips on effectively exporting YouTube cookies\n" 14:54:03.665 [info] {"args":{"id":8350},"id":203184,"meta":{},"state":"success","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":10872610,"event":"job:stop","queue_time":787747,"attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 14:54:03.674 [info] {"args":{"id":8401},"id":203186,"meta":{},"system_time":1767412443674232930,"max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 14:54:03.675 [debug] QUERY OK source="media_items" db=0.4ms queue=0.2ms idle=890.9ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [8401] 14:54:03.676 [info] User scripts lifecyle file either not present or is empty. Skipping. 14:54:03.677 [debug] QUERY OK source="sources" db=0.4ms idle=892.4ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [7] 14:54:03.678 [debug] QUERY OK source="media_profiles" db=0.5ms queue=0.2ms idle=240.3ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 14:54:03.679 [debug] QUERY OK source="media_items" db=0.5ms idle=13.4ms SELECT 1 FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) LIMIT 1 [8401] 14:54:03.681 [debug] QUERY OK source="media_metadata" db=0.4ms idle=7.4ms SELECT m0."id", m0."metadata_filepath", m0."thumbnail_filepath", m0."media_item_id", m0."inserted_at", m0."updated_at", m0."media_item_id" FROM "media_metadata" AS m0 WHERE (m0."media_item_id" = ?) [8401] 14:54:03.682 [debug] QUERY OK source="media_profiles" db=0.2ms idle=6.4ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 14:54:03.683 [debug] QUERY OK source="settings" db=0.1ms idle=6.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:54:03.684 [debug] QUERY OK source="settings" db=0.2ms idle=5.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:54:03.684 [debug] Running yt-dlp command for action: get_downloadable_status 14:54:03.686 [debug] QUERY OK source="settings" db=0.2ms idle=6.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:54:03.686 [debug] QUERY OK source="settings" db=0.1ms idle=4.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:54:03.687 [debug] QUERY OK source="settings" db=0.1ms queue=0.1ms idle=4.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:54:03.687 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=ZWSj0M132e8 --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/10/1c/101c4015b4ef76a5d6c85fbd60653a03591e22b46d5911b41481cf8d0f267777.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:54:03.691 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=bhkmFO8DikY --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/bd/a5/bda5b8e8ba819d810c0ec997bbade6217a7fed991885d2316320334a188f92ac.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 1 with: ERROR: [youtube] bhkmFO8DikY: Sign in to confirm your age. This video may be inappropriate for some users. Use --cookies-from-browser or --cookies for the authentication. See https://github.com/yt-dlp/yt-dlp/wiki/FAQ#how-do-i-pass-cookies-to-yt-dlp for how to manually pass cookies. Also see https://github.com/yt-dlp/yt-dlp/wiki/Extractors#exporting-youtube-cookies for tips on effectively exporting YouTube cookies 14:54:03.692 [error] yt-dlp download error for media item #8380: "ERROR: [youtube] bhkmFO8DikY: Sign in to confirm your age. This video may be inappropriate for some users. Use --cookies-from-browser or --cookies for the authentication. See https://github.com/yt-dlp/yt-dlp/wiki/FAQ#how-do-i-pass-cookies-to-yt-dlp for how to manually pass cookies. Also see https://github.com/yt-dlp/yt-dlp/wiki/Extractors#exporting-youtube-cookies for tips on effectively exporting YouTube cookies\n" 14:54:03.692 [error] yt-dlp download will not be retried: "ERROR: [youtube] bhkmFO8DikY: Sign in to confirm your age. This video may be inappropriate for some users. Use --cookies-from-browser or --cookies for the authentication. See https://github.com/yt-dlp/yt-dlp/wiki/FAQ#how-do-i-pass-cookies-to-yt-dlp for how to manually pass cookies. Also see https://github.com/yt-dlp/yt-dlp/wiki/Extractors#exporting-youtube-cookies for tips on effectively exporting YouTube cookies\n" 14:54:03.692 [info] {"args":{"id":8380},"id":203185,"meta":{},"state":"success","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":10899956,"event":"job:stop","queue_time":787747,"attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 14:54:03.700 [info] {"args":{"id":8418},"id":203187,"meta":{},"system_time":1767412443700183190,"max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 14:54:03.701 [debug] QUERY OK source="media_items" db=0.3ms queue=0.1ms idle=14.5ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [8418] 14:54:03.701 [info] User scripts lifecyle file either not present or is empty. Skipping. 14:54:03.702 [debug] QUERY OK source="sources" db=0.4ms idle=15.2ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [7] 14:54:03.702 [debug] QUERY OK source="media_profiles" db=0.2ms idle=15.4ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 14:54:03.703 [debug] QUERY OK source="media_items" db=0.4ms idle=10.3ms SELECT 1 FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) LIMIT 1 [8418] 14:54:03.705 [debug] QUERY OK source="media_metadata" db=0.2ms idle=4.7ms SELECT m0."id", m0."metadata_filepath", m0."thumbnail_filepath", m0."media_item_id", m0."inserted_at", m0."updated_at", m0."media_item_id" FROM "media_metadata" AS m0 WHERE (m0."media_item_id" = ?) [8418] 14:54:03.705 [debug] QUERY OK source="media_profiles" db=0.2ms queue=0.1ms idle=4.2ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 14:54:03.706 [debug] QUERY OK source="settings" db=0.2ms idle=4.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:54:03.707 [debug] QUERY OK source="settings" db=0.2ms idle=4.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:54:03.708 [debug] Running yt-dlp command for action: get_downloadable_status 14:54:03.709 [debug] QUERY OK source="settings" db=0.2ms idle=5.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:54:03.710 [debug] QUERY OK source="settings" db=0.2ms idle=4.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:54:03.710 [debug] QUERY OK source="settings" db=0.1ms idle=4.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:54:03.711 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=v6jHhzj08yQ --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/d2/d8/d2d899278e49e8e1c89e517e2850eb4f8f6f4919d79c788bf20b81afa688e514.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:54:09.068 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=v6jHhzj08yQ --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/d2/d8/d2d899278e49e8e1c89e517e2850eb4f8f6f4919d79c788bf20b81afa688e514.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 1 with: ERROR: [youtube] v6jHhzj08yQ: Sign in to confirm your age. This video may be inappropriate for some users. Use --cookies-from-browser or --cookies for the authentication. See https://github.com/yt-dlp/yt-dlp/wiki/FAQ#how-do-i-pass-cookies-to-yt-dlp for how to manually pass cookies. Also see https://github.com/yt-dlp/yt-dlp/wiki/Extractors#exporting-youtube-cookies for tips on effectively exporting YouTube cookies 14:54:09.069 [debug] QUERY OK source="settings" db=0.3ms queue=0.1ms idle=621.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:54:09.071 [debug] QUERY OK source="settings" db=0.6ms queue=0.1ms idle=286.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:54:09.072 [debug] Running yt-dlp command for action: get_downloadable_status 14:54:09.074 [debug] QUERY OK source="settings" db=0.7ms idle=289.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:54:09.075 [debug] QUERY OK source="settings" db=0.4ms queue=0.1ms idle=290.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:54:09.076 [debug] QUERY OK source="settings" db=0.3ms queue=0.1ms idle=291.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:54:09.077 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=v6jHhzj08yQ --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/1c/9e/1c9eaa1756623af4f81478036020c9282237464560b01114a32020c4ac0fe57b.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:54:09.092 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=ZWSj0M132e8 --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/10/1c/101c4015b4ef76a5d6c85fbd60653a03591e22b46d5911b41481cf8d0f267777.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 1 with: ERROR: [youtube] ZWSj0M132e8: Sign in to confirm your age. This video may be inappropriate for some users. Use --cookies-from-browser or --cookies for the authentication. See https://github.com/yt-dlp/yt-dlp/wiki/FAQ#how-do-i-pass-cookies-to-yt-dlp for how to manually pass cookies. Also see https://github.com/yt-dlp/yt-dlp/wiki/Extractors#exporting-youtube-cookies for tips on effectively exporting YouTube cookies 14:54:09.092 [debug] QUERY OK source="settings" db=0.2ms idle=22.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:54:09.093 [debug] QUERY OK source="settings" db=0.1ms idle=21.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:54:09.093 [debug] Running yt-dlp command for action: get_downloadable_status 14:54:09.094 [debug] QUERY OK source="settings" db=0.1ms idle=19.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:54:09.095 [debug] QUERY OK source="settings" db=0.1ms idle=19.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:54:09.095 [debug] QUERY OK source="settings" db=0.2ms idle=18.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:54:09.095 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=ZWSj0M132e8 --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/7f/e0/7fe0d01bfa4e06b7e89bc0a7dfd14ef7c5b3abe0bf96a2c12b2fc740eafb6b4c.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:54:13.425 [info] {"source":"oban","duration":2935,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:54:14.401 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=ZWSj0M132e8 --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/7f/e0/7fe0d01bfa4e06b7e89bc0a7dfd14ef7c5b3abe0bf96a2c12b2fc740eafb6b4c.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 1 with: ERROR: [youtube] ZWSj0M132e8: Sign in to confirm your age. This video may be inappropriate for some users. Use --cookies-from-browser or --cookies for the authentication. See https://github.com/yt-dlp/yt-dlp/wiki/FAQ#how-do-i-pass-cookies-to-yt-dlp for how to manually pass cookies. Also see https://github.com/yt-dlp/yt-dlp/wiki/Extractors#exporting-youtube-cookies for tips on effectively exporting YouTube cookies 14:54:14.402 [error] yt-dlp download error for media item #8401: "ERROR: [youtube] ZWSj0M132e8: Sign in to confirm your age. This video may be inappropriate for some users. Use --cookies-from-browser or --cookies for the authentication. See https://github.com/yt-dlp/yt-dlp/wiki/FAQ#how-do-i-pass-cookies-to-yt-dlp for how to manually pass cookies. Also see https://github.com/yt-dlp/yt-dlp/wiki/Extractors#exporting-youtube-cookies for tips on effectively exporting YouTube cookies\n" 14:54:14.402 [error] yt-dlp download will not be retried: "ERROR: [youtube] ZWSj0M132e8: Sign in to confirm your age. This video may be inappropriate for some users. Use --cookies-from-browser or --cookies for the authentication. See https://github.com/yt-dlp/yt-dlp/wiki/FAQ#how-do-i-pass-cookies-to-yt-dlp for how to manually pass cookies. Also see https://github.com/yt-dlp/yt-dlp/wiki/Extractors#exporting-youtube-cookies for tips on effectively exporting YouTube cookies\n" 14:54:14.403 [info] {"args":{"id":8401},"id":203186,"meta":{},"state":"success","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":10728149,"event":"job:stop","queue_time":11671853,"attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 14:54:14.627 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=v6jHhzj08yQ --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/1c/9e/1c9eaa1756623af4f81478036020c9282237464560b01114a32020c4ac0fe57b.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 1 with: ERROR: [youtube] v6jHhzj08yQ: Sign in to confirm your age. This video may be inappropriate for some users. Use --cookies-from-browser or --cookies for the authentication. See https://github.com/yt-dlp/yt-dlp/wiki/FAQ#how-do-i-pass-cookies-to-yt-dlp for how to manually pass cookies. Also see https://github.com/yt-dlp/yt-dlp/wiki/Extractors#exporting-youtube-cookies for tips on effectively exporting YouTube cookies 14:54:14.628 [error] yt-dlp download error for media item #8418: "ERROR: [youtube] v6jHhzj08yQ: Sign in to confirm your age. This video may be inappropriate for some users. Use --cookies-from-browser or --cookies for the authentication. See https://github.com/yt-dlp/yt-dlp/wiki/FAQ#how-do-i-pass-cookies-to-yt-dlp for how to manually pass cookies. Also see https://github.com/yt-dlp/yt-dlp/wiki/Extractors#exporting-youtube-cookies for tips on effectively exporting YouTube cookies\n" 14:54:14.628 [error] yt-dlp download will not be retried: "ERROR: [youtube] v6jHhzj08yQ: Sign in to confirm your age. This video may be inappropriate for some users. Use --cookies-from-browser or --cookies for the authentication. See https://github.com/yt-dlp/yt-dlp/wiki/FAQ#how-do-i-pass-cookies-to-yt-dlp for how to manually pass cookies. Also see https://github.com/yt-dlp/yt-dlp/wiki/Extractors#exporting-youtube-cookies for tips on effectively exporting YouTube cookies\n" 14:54:14.629 [info] {"args":{"id":8418},"id":203187,"meta":{},"state":"success","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":10928061,"event":"job:stop","queue_time":11698851,"attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 14:54:28.531 [info] GET /sources/6 14:54:28.531 [info] GET /sources/1 14:54:28.532 [debug] Processing with PinchflatWeb.Sources.SourceController.show/2 Parameters: %{"id" => "6"} Pipelines: [:browser] 14:54:28.532 [debug] Processing with PinchflatWeb.Sources.SourceController.show/2 Parameters: %{"id" => "1"} Pipelines: [:browser] 14:54:28.533 [debug] QUERY OK source="sources" db=1.0ms idle=748.6ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 14:54:28.534 [debug] QUERY OK source="sources" db=1.2ms idle=748.6ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [6] 14:54:28.535 [debug] QUERY OK source="media_profiles" db=1.1ms idle=750.2ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 14:54:28.535 [debug] QUERY OK source="media_profiles" db=1.1ms idle=750.2ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 14:54:28.537 [debug] QUERY OK source="tasks" db=1.3ms queue=0.1ms idle=37.7ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at" FROM "tasks" AS t0 INNER JOIN "oban_jobs" AS o1 ON o1."id" = t0."job_id" WHERE (t0."source_id" = ?) AND (o1."state" IN (?,?,?,?)) [1, "executing", "available", "scheduled", "retryable"] 14:54:28.537 [debug] QUERY OK source="tasks" db=1.4ms queue=0.1ms idle=2.3ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at" FROM "tasks" AS t0 INNER JOIN "oban_jobs" AS o1 ON o1."id" = t0."job_id" WHERE (t0."source_id" = ?) AND (o1."state" IN (?,?,?,?)) [6, "executing", "available", "scheduled", "retryable"] 14:54:28.538 [debug] QUERY OK source="oban_jobs" db=0.7ms queue=0.1ms idle=3.9ms SELECT o0."id", o0."state", o0."queue", o0."worker", o0."args", o0."meta", o0."tags", o0."errors", o0."attempt", o0."attempted_by", o0."max_attempts", o0."priority", o0."attempted_at", o0."cancelled_at", o0."completed_at", o0."discarded_at", o0."inserted_at", o0."scheduled_at", o0."id" FROM "oban_jobs" AS o0 WHERE (o0."id" IN (?,?)) [203167, 202162] 14:54:28.539 [debug] QUERY OK source="oban_jobs" db=0.8ms idle=2.5ms SELECT o0."id", o0."state", o0."queue", o0."worker", o0."args", o0."meta", o0."tags", o0."errors", o0."attempt", o0."attempted_by", o0."max_attempts", o0."priority", o0."attempted_at", o0."cancelled_at", o0."completed_at", o0."discarded_at", o0."inserted_at", o0."scheduled_at", o0."id" FROM "oban_jobs" AS o0 WHERE (o0."id" IN (?,?)) [203171, 202170] 14:54:28.539 [debug] QUERY OK source="settings" db=0.4ms queue=0.1ms idle=3.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:54:28.540 [debug] QUERY OK source="settings" db=0.5ms idle=1.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:54:28.540 [debug] QUERY OK source="settings" db=0.5ms idle=2.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:54:28.541 [debug] QUERY OK source="settings" db=1.2ms idle=1.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:54:28.542 [debug] QUERY OK source="settings" db=0.3ms queue=0.7ms idle=2.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:54:28.542 [debug] QUERY OK source="settings" db=0.2ms idle=2.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:54:28.546 [debug] QUERY OK source="sources" db=0.6ms idle=4.9ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 14:54:28.546 [debug] QUERY OK source="sources" db=0.7ms idle=5.6ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [6] 14:54:28.549 [debug] QUERY OK source="media_items" db=1.7ms idle=4.5ms SELECT count(m0."id") FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [6] 14:54:28.549 [debug] QUERY OK source="media_items" db=2.8ms idle=5.2ms SELECT count(m0."id") FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [1] 14:54:28.552 [debug] QUERY OK source="media_items" db=2.4ms idle=6.7ms SELECT m0."id", m0."title", m0."uploaded_at", m0."prevent_download", m0."last_error" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) ORDER BY m0."uploaded_at" DESC LIMIT ? OFFSET ? [6, 10, 0] 14:54:28.553 [debug] QUERY OK source="sources" db=0.3ms idle=6.5ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [6] 14:54:28.553 [debug] QUERY OK source="media_items" db=3.3ms queue=0.1ms idle=3.8ms SELECT m0."id", m0."title", m0."uploaded_at", m0."prevent_download", m0."last_error" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) ORDER BY m0."uploaded_at" DESC LIMIT ? OFFSET ? [1, 10, 0] 14:54:28.554 [debug] QUERY OK source="media_items" db=0.3ms queue=0.1ms idle=4.7ms SELECT count(m0."id") FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND NOT (m0."media_filepath" IS NULL)) [6] 14:54:28.555 [debug] QUERY OK source="sources" db=0.6ms idle=2.4ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 14:54:28.555 [debug] QUERY OK source="media_items" db=0.4ms idle=1.9ms SELECT count(m0."id") FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND NOT (m0."media_filepath" IS NULL)) [1] 14:54:28.556 [debug] QUERY OK source="media_items" db=1.8ms idle=4.5ms SELECT m0."id", m0."title", m0."uploaded_at", m0."prevent_download", m0."last_error" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND NOT (m0."media_filepath" IS NULL)) ORDER BY m0."uploaded_at" DESC LIMIT ? OFFSET ? [6, 10, 0] 14:54:28.557 [debug] QUERY OK source="media_items" db=1.3ms idle=2.2ms SELECT m0."id", m0."title", m0."uploaded_at", m0."prevent_download", m0."last_error" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND NOT (m0."media_filepath" IS NULL)) ORDER BY m0."uploaded_at" DESC LIMIT ? OFFSET ? [1, 10, 0] 14:54:28.557 [debug] QUERY OK source="sources" db=0.2ms idle=3.1ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [6] 14:54:28.558 [debug] QUERY OK source="media_items" db=0.4ms idle=2.7ms SELECT count(m0."id") FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds"))))) [6] 14:54:28.559 [debug] QUERY OK source="sources" db=0.3ms idle=3.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 14:54:28.560 [debug] QUERY OK source="media_items" db=1.7ms idle=2.8ms SELECT m0."id", m0."title", m0."uploaded_at", m0."prevent_download", m0."last_error" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds"))))) ORDER BY m0."uploaded_at" DESC LIMIT ? OFFSET ? [6, 10, 0] 14:54:28.560 [debug] QUERY OK source="media_items" db=0.7ms idle=2.7ms SELECT count(m0."id") FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds"))))) [1] 14:54:28.562 [info] Sent 200 in 31ms 14:54:28.563 [debug] QUERY OK source="media_items" db=2.2ms idle=3.4ms SELECT m0."id", m0."title", m0."uploaded_at", m0."prevent_download", m0."last_error" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds"))))) ORDER BY m0."uploaded_at" DESC LIMIT ? OFFSET ? [1, 10, 0] 14:54:28.564 [info] Sent 200 in 32ms 14:54:29.929 [info] GET /sources/21/force_index 14:54:29.930 [debug] QUERY OK source="settings" db=0.3ms queue=0.1ms idle=430.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:54:29.931 [debug] QUERY OK source="settings" db=0.2ms idle=147.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:54:29.931 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 14:54:29.933 [error] #PID<0.11574.0> running PinchflatWeb.Endpoint (connection #PID<0.11570.0>, stream id 2) terminated Server: pinchflat.suranyami.com:80 (http) Request: GET /sources/21/force_index ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/21/force_index (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.11570.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/21/force_index", host: "pinchflat.suranyami.com", peer: {{10, 210, 0, 2}, 36700}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, zstd, deflate", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYbU1BWGdzUHUxazBXVkdhdm1ZN0pQcExW.J3YImEB1xGKXldv8HbPPxuCMG8TTcCUI8njGZN-5Wjs", "host" => "pinchflat.suranyami.com", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)", "via" => "2.0 Caddy", "x-forwarded-for" => "216.73.216.55", "x-forwarded-host" => "pinchflat.suranyami.com", "x-forwarded-proto" => "https" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 2, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{ "_pinchflat_key" => "SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYbU1BWGdzUHUxazBXVkdhdm1ZN0pQcExW.J3YImEB1xGKXldv8HbPPxuCMG8TTcCUI8njGZN-5Wjs" }, halted: false, host: "pinchflat.suranyami.com", method: "GET", owner: #PID<0.11574.0>, params: %{}, path_info: ["sources", "21", "force_index"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.suranyami.com", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {10, 210, 0, 2}, req_cookies: %{ "_pinchflat_key" => "SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYbU1BWGdzUHUxazBXVkdhdm1ZN0pQcExW.J3YImEB1xGKXldv8HbPPxuCMG8TTcCUI8njGZN-5Wjs" }, req_headers: [ {"accept", "*/*"}, {"accept-encoding", "gzip, br, zstd, deflate"}, {"cookie", "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYbU1BWGdzUHUxazBXVkdhdm1ZN0pQcExW.J3YImEB1xGKXldv8HbPPxuCMG8TTcCUI8njGZN-5Wjs"}, {"host", "pinchflat.suranyami.com"}, {"user-agent", "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)"}, {"via", "2.0 Caddy"}, {"x-forwarded-for", "216.73.216.55"}, {"x-forwarded-host", "pinchflat.suranyami.com"}, {"x-forwarded-proto", "https"} ], request_path: "/sources/21/force_index", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GIccRvm_362CxcoAAjph"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.11570.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/21/force_index", host: "pinchflat.suranyami.com", peer: {{10, 210, 0, 2}, 36700}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, zstd, deflate", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYbU1BWGdzUHUxazBXVkdhdm1ZN0pQcExW.J3YImEB1xGKXldv8HbPPxuCMG8TTcCUI8njGZN-5Wjs", "host" => "pinchflat.suranyami.com", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)", "via" => "2.0 Caddy", "x-forwarded-for" => "216.73.216.55", "x-forwarded-host" => "pinchflat.suranyami.com", "x-forwarded-proto" => "https" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 2, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/21/force_index (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.11570.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/21/force_index", host: "pinchflat.suranyami.com", peer: {{10, 210, 0, 2}, 36700}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, zstd, deflate", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYbU1BWGdzUHUxazBXVkdhdm1ZN0pQcExW.J3YImEB1xGKXldv8HbPPxuCMG8TTcCUI8njGZN-5Wjs", "host" => "pinchflat.suranyami.com", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)", "via" => "2.0 Caddy", "x-forwarded-for" => "216.73.216.55", "x-forwarded-host" => "pinchflat.suranyami.com", "x-forwarded-proto" => "https" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 2, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{ "_pinchflat_key" => "SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYbU1BWGdzUHUxazBXVkdhdm1ZN0pQcExW.J3YImEB1xGKXldv8HbPPxuCMG8TTcCUI8njGZN-5Wjs" }, halted: false, host: "pinchflat.suranyami.com", method: "GET", owner: #PID<0.11574.0>, params: %{}, path_info: ["sources", "21", "force_index"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #F (truncated) 14:54:30.435 [info] GET /sources/5 14:54:30.435 [debug] Processing with PinchflatWeb.Sources.SourceController.show/2 Parameters: %{"id" => "5"} Pipelines: [:browser] 14:54:30.437 [debug] QUERY OK source="sources" db=0.7ms idle=652.3ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [5] 14:54:30.438 [debug] QUERY OK source="media_profiles" db=0.5ms idle=653.6ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 14:54:30.439 [debug] QUERY OK source="tasks" db=0.4ms queue=0.1ms idle=654.7ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at" FROM "tasks" AS t0 INNER JOIN "oban_jobs" AS o1 ON o1."id" = t0."job_id" WHERE (t0."source_id" = ?) AND (o1."state" IN (?,?,?,?)) [5, "executing", "available", "scheduled", "retryable"] 14:54:30.440 [debug] QUERY OK source="oban_jobs" db=0.3ms idle=508.9ms SELECT o0."id", o0."state", o0."queue", o0."worker", o0."args", o0."meta", o0."tags", o0."errors", o0."attempt", o0."attempted_by", o0."max_attempts", o0."priority", o0."attempted_at", o0."cancelled_at", o0."completed_at", o0."discarded_at", o0."inserted_at", o0."scheduled_at", o0."id" FROM "oban_jobs" AS o0 WHERE (o0."id" = ?) [202963] 14:54:30.441 [debug] QUERY OK source="settings" db=0.3ms queue=0.1ms idle=508.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:54:30.441 [debug] QUERY OK source="settings" db=0.3ms queue=0.1ms idle=3.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:54:30.442 [debug] QUERY OK source="settings" db=0.1ms idle=4.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:54:30.446 [debug] QUERY OK source="sources" db=0.3ms queue=0.1ms idle=6.1ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [5] 14:54:30.454 [debug] QUERY OK source="media_items" db=8.0ms idle=6.4ms SELECT count(m0."id") FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [5] 14:54:30.462 [debug] QUERY OK source="media_items" db=6.8ms idle=14.1ms SELECT m0."id", m0."title", m0."uploaded_at", m0."prevent_download", m0."last_error" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) ORDER BY m0."uploaded_at" DESC LIMIT ? OFFSET ? [5, 10, 0] 14:54:30.464 [debug] QUERY OK source="sources" db=0.4ms idle=22.2ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [5] 14:54:30.466 [debug] QUERY OK source="media_items" db=0.9ms idle=22.3ms SELECT count(m0."id") FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND NOT (m0."media_filepath" IS NULL)) [5] 14:54:30.472 [debug] QUERY OK source="media_items" db=6.1ms idle=20.1ms SELECT m0."id", m0."title", m0."uploaded_at", m0."prevent_download", m0."last_error" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND NOT (m0."media_filepath" IS NULL)) ORDER BY m0."uploaded_at" DESC LIMIT ? OFFSET ? [5, 10, 0] 14:54:30.475 [debug] QUERY OK source="sources" db=0.3ms idle=20.3ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [5] 14:54:30.478 [debug] QUERY OK source="media_items" db=2.0ms idle=14.1ms SELECT count(m0."id") FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds"))))) [5] 14:54:30.486 [debug] QUERY OK source="media_items" db=7.3ms idle=14.2ms SELECT m0."id", m0."title", m0."uploaded_at", m0."prevent_download", m0."last_error" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds"))))) ORDER BY m0."uploaded_at" DESC LIMIT ? OFFSET ? [5, 10, 0] 14:54:30.491 [info] Sent 200 in 55ms 14:54:43.428 [info] {"source":"oban","duration":1711,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:54:50.576 [info] {"args":{"id":3},"id":203166,"meta":{},"system_time":1767412490576682364,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 14:54:50.578 [debug] QUERY OK source="sources" db=1.4ms idle=793.2ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [3] 14:54:50.580 [debug] QUERY OK source="settings" db=1.2ms queue=0.1ms idle=795.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:54:50.582 [debug] QUERY OK source="media_profiles" db=1.1ms idle=796.7ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 14:54:50.583 [debug] QUERY OK source="settings" db=0.7ms idle=14.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:54:50.583 [debug] Fetching recent media IDs from YouTube API for playlist: UUISrVZmDM4x-Rq9mmNUw7Zw 14:54:50.583 [debug] QUERY OK source="settings" db=0.3ms idle=6.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:54:50.584 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 14:54:51.052 [debug] QUERY OK source="media_items" db=2.6ms idle=470.3ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND m0."media_id" IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [3, "MQ2cHq3-J7A", "CtF5dLHITYA", "SGJkxRdkRGg", "OUCt85aJaAA", "9gARPYZOka4", "-uH-Gi5tjEw", "qwUBBQKYX94", "s8VLDSQJ8nA", "EvPfr0lKkh4", "msXzAxF49gA", "hQCWaSvjkU0", "RcmjVsy3a-g", "xtuNc9vYJG4", "fj2tcg8OzsM", "2FZ4IfPACDM", "2Q9DzW20YJ8", "IVsWFGOE_mw", "vPxpMcv2Z4Y", "Zverj_ldlhY", "pQK8xasPd9Q", "_Yo7nh8u9pk", "4HzltsOvc0A", "a8UBLMm71JY", "3vqbr7-6Twk", "Df0iVjAKJZw", "n-X-AJpHUyI", "4CV7jI0e0Hw", "nqPoocCKci8", "5IIOdWnJGxg", "jkPL8BaM4ko", "CzeQtnRmUZ0", "9u-0d2IVZ3I", "igtvNmqsKM0", "47XDpW4nOzk", "8xvd7xSLQOo", "PnQPZMN0kIY", "feDph2WgRfI", "Z5FZ2XfX4Uc", "e0DxPopyrqM", "YvaK-Tjp2ck", "6_CctUPWX4I", "_DzHKw8yK58", "VnAkeiehyCg", "EFW1iCguDV8", "CEj7B1VzUwU", "3cy5fWUssjQ", "ZnjoTYmqLhs", "5IxtizzvaWw", "ZnBsMRl-EL0", ...] 14:54:51.057 [debug] QUERY OK source="media_items" db=3.4ms idle=473.6ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [3] 14:54:51.060 [debug] QUERY OK source="tasks" db=0.4ms idle=476.2ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [203190, 3, ~U[2026-01-03 03:54:51Z], ~U[2026-01-03 03:54:51Z]] 14:54:51.061 [info] {"args":{"id":3},"id":203166,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":483995,"event":"job:stop","queue_time":372555,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 14:54:56.601 [info] {"args":{"id":1},"id":203167,"meta":{},"system_time":1767412496601701664,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 14:54:56.603 [debug] QUERY OK source="sources" db=0.7ms queue=0.1ms idle=1818.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 14:54:56.604 [debug] QUERY OK source="settings" db=0.5ms queue=0.1ms idle=1819.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:54:56.605 [debug] QUERY OK source="media_profiles" db=0.7ms idle=1015.4ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 14:54:56.606 [debug] QUERY OK source="settings" db=0.5ms queue=0.1ms idle=12.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:54:56.606 [debug] Fetching recent media IDs from YouTube API for playlist: UU54SLBnD5k5U3Q6N__UjbAw 14:54:56.608 [debug] QUERY OK source="settings" db=0.6ms queue=0.2ms idle=5.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:54:56.608 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 14:54:56.720 [info] GET /sources/7/edit 14:54:56.720 [debug] Processing with PinchflatWeb.Sources.SourceController.edit/2 Parameters: %{"id" => "7"} Pipelines: [:browser] 14:54:56.721 [info] GET /sources/24 14:54:56.721 [debug] Processing with PinchflatWeb.Sources.SourceController.show/2 Parameters: %{"id" => "24"} Pipelines: [:browser] 14:54:56.721 [debug] QUERY OK source="sources" db=1.1ms idle=117.4ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [7] 14:54:56.722 [debug] QUERY OK source="sources" db=0.7ms idle=117.4ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [24] 14:54:56.723 [debug] QUERY OK source="media_profiles" db=1.2ms idle=116.6ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at" FROM "media_profiles" AS m0 ORDER BY m0."name" [] 14:54:56.724 [debug] QUERY OK source="media_profiles" db=1.4ms queue=0.1ms idle=116.5ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 14:54:56.724 [debug] QUERY OK source="settings" db=0.2ms queue=0.2ms idle=116.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:54:56.725 [debug] QUERY OK source="settings" db=0.5ms queue=0.2ms idle=3.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:54:56.726 [debug] QUERY OK source="tasks" db=1.3ms queue=0.1ms idle=2.5ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at" FROM "tasks" AS t0 INNER JOIN "oban_jobs" AS o1 ON o1."id" = t0."job_id" WHERE (t0."source_id" = ?) AND (o1."state" IN (?,?,?,?)) [24, "executing", "available", "scheduled", "retryable"] 14:54:56.727 [debug] QUERY OK source="settings" db=0.5ms queue=0.3ms idle=3.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:54:56.727 [debug] QUERY OK source="oban_jobs" db=0.5ms queue=0.1ms idle=2.5ms SELECT o0."id", o0."state", o0."queue", o0."worker", o0."args", o0."meta", o0."tags", o0."errors", o0."attempt", o0."attempted_by", o0."max_attempts", o0."priority", o0."attempted_at", o0."cancelled_at", o0."completed_at", o0."discarded_at", o0."inserted_at", o0."scheduled_at", o0."id" FROM "oban_jobs" AS o0 WHERE (o0."id" IN (?,?)) [203189, 202152] 14:54:56.728 [debug] QUERY OK source="settings" db=0.1ms idle=3.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:54:56.729 [debug] QUERY OK source="settings" db=0.2ms queue=0.1ms idle=3.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:54:56.733 [debug] QUERY OK source="settings" db=2.9ms idle=3.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:54:56.736 [info] Sent 200 in 16ms 14:54:56.736 [debug] QUERY OK source="sources" db=0.3ms idle=8.3ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [24] 14:54:56.738 [debug] QUERY OK source="media_items" db=0.8ms idle=9.2ms SELECT count(m0."id") FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [24] 14:54:56.739 [debug] QUERY OK source="media_items" db=0.9ms queue=0.1ms idle=9.7ms SELECT m0."id", m0."title", m0."uploaded_at", m0."prevent_download", m0."last_error" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) ORDER BY m0."uploaded_at" DESC LIMIT ? OFFSET ? [24, 10, 0] 14:54:56.741 [debug] QUERY OK source="sources" db=0.8ms idle=10.7ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [24] 14:54:56.742 [debug] QUERY OK source="media_items" db=0.8ms idle=8.0ms SELECT count(m0."id") FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND NOT (m0."media_filepath" IS NULL)) [24] 14:54:56.743 [debug] QUERY OK source="media_items" db=0.7ms queue=0.1ms idle=6.0ms SELECT m0."id", m0."title", m0."uploaded_at", m0."prevent_download", m0."last_error" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND NOT (m0."media_filepath" IS NULL)) ORDER BY m0."uploaded_at" DESC LIMIT ? OFFSET ? [24, 10, 0] 14:54:56.746 [debug] QUERY OK source="sources" db=0.4ms idle=7.9ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [24] 14:54:56.747 [debug] QUERY OK source="media_items" db=0.5ms idle=7.3ms SELECT count(m0."id") FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds"))))) [24] 14:54:56.749 [debug] QUERY OK source="media_items" db=1.2ms idle=7.0ms SELECT m0."id", m0."title", m0."uploaded_at", m0."prevent_download", m0."last_error" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds"))))) ORDER BY m0."uploaded_at" DESC LIMIT ? OFFSET ? [24, 10, 0] 14:54:56.753 [info] Sent 200 in 32ms 14:54:56.971 [debug] QUERY OK source="media_items" db=2.7ms idle=226.0ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND m0."media_id" IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [1, "UYCKIroDVBY", "ynOiaE9f6NY", "At_WjGosTNM", "_s7ZzdPoVZE", "ulhKFEKXIEI", "YpQ2jupcrHk", "PetMnG6cCDw", "VdxlXCnA1DM", "uj2s7HZQigU", "rZ7Y_gPAHig", "LTmK8Ab6IFE", "sZKNVGI8xt0", "_PUZIf6VQto", "J2-1ZErtS7A", "OEyptSEM5Tw", "HLeY2_hJvRk", "DkZ5uXcDxjc", "zPWe_aBuNfM", "PZN18led4ok", "66F09ebI9gw", "Pfok4B_xyaI", "e5HEGCCadBU", "hYFsHfPquPg", "nKsnfEB29ek", "OpDh_O473Ms", "ZTtZ12XtQpg", "TphXloX3PEI", "4Qhp4VPP2Wo", "J5l7jvbp3u8", "uL_YQMkkbUg", "SAZ17l0EwxI", "fTa_T2pVwuk", "6HpTVfX0SvI", "XlIWsRyXL8U", "nM1GQNJU6LQ", "WVN1LNy1zgo", "0Fxf6_q7qHc", "dL0KPsy-Dww", "G43wJ7YyWzM", "yVy89TnL9Zg", "BR1VRJDu-gc", "-2HeoqiMC6s", "7WXyx51z5G8", "jCk-9S8PQyc", "vGEIHv1XelY", "rOI7HYGGHpo", "gNeGHhU6UaI", "gUlkwSHOT7Q", "tpf7TxliCxA", ...] 14:54:56.976 [debug] QUERY OK source="media_items" db=2.4ms idle=230.3ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [1] 14:54:56.979 [debug] QUERY OK source="tasks" db=0.4ms idle=229.3ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [203191, 1, ~U[2026-01-03 03:54:56Z], ~U[2026-01-03 03:54:56Z]] 14:54:56.979 [info] {"args":{"id":1},"id":203167,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":377380,"event":"job:stop","queue_time":433811,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 14:54:57.637 [info] GET /sources/3/edit 14:54:57.637 [debug] Processing with PinchflatWeb.Sources.SourceController.edit/2 Parameters: %{"id" => "3"} Pipelines: [:browser] 14:54:57.639 [debug] QUERY OK source="sources" db=0.9ms queue=0.2ms idle=660.2ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [3] 14:54:57.641 [debug] QUERY OK source="media_profiles" db=1.0ms queue=0.1ms idle=661.5ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at" FROM "media_profiles" AS m0 ORDER BY m0."name" [] 14:54:57.643 [debug] QUERY OK source="settings" db=0.5ms idle=662.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:54:57.644 [debug] QUERY OK source="settings" db=0.7ms queue=0.1ms idle=656.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:54:57.645 [debug] QUERY OK source="settings" db=0.5ms idle=48.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:54:57.653 [info] Sent 200 in 16ms 14:54:58.138 [info] GET /sources/16 14:54:58.138 [debug] Processing with PinchflatWeb.Sources.SourceController.show/2 Parameters: %{"id" => "16"} Pipelines: [:browser] 14:54:58.141 [debug] QUERY OK source="sources" db=1.3ms queue=0.1ms idle=499.7ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [16] 14:54:58.142 [debug] QUERY OK source="media_profiles" db=1.0ms idle=499.7ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 14:54:58.145 [debug] QUERY OK source="tasks" db=2.0ms queue=0.1ms idle=500.2ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at" FROM "tasks" AS t0 INNER JOIN "oban_jobs" AS o1 ON o1."id" = t0."job_id" WHERE (t0."source_id" = ?) AND (o1."state" IN (?,?,?,?)) [16, "executing", "available", "scheduled", "retryable"] 14:54:58.146 [debug] QUERY OK source="oban_jobs" db=0.6ms queue=0.1ms idle=501.5ms SELECT o0."id", o0."state", o0."queue", o0."worker", o0."args", o0."meta", o0."tags", o0."errors", o0."attempt", o0."attempted_by", o0."max_attempts", o0."priority", o0."attempted_at", o0."cancelled_at", o0."completed_at", o0."discarded_at", o0."inserted_at", o0."scheduled_at", o0."id" FROM "oban_jobs" AS o0 WHERE (o0."id" IN (?,?)) [203177, 202179] 14:54:58.147 [debug] QUERY OK source="settings" db=0.5ms idle=501.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:54:58.148 [debug] QUERY OK source="settings" db=0.4ms idle=6.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:54:58.149 [debug] QUERY OK source="settings" db=0.5ms idle=6.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:54:58.151 [debug] QUERY OK source="sources" db=0.6ms idle=5.6ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [16] 14:54:58.155 [debug] QUERY OK source="media_items" db=3.1ms idle=5.4ms SELECT count(m0."id") FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [16] 14:54:58.159 [debug] QUERY OK source="media_items" db=3.9ms idle=7.9ms SELECT m0."id", m0."title", m0."uploaded_at", m0."prevent_download", m0."last_error" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) ORDER BY m0."uploaded_at" DESC LIMIT ? OFFSET ? [16, 10, 0] 14:54:58.160 [debug] QUERY OK source="sources" db=0.3ms idle=11.6ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [16] 14:54:58.161 [debug] QUERY OK source="media_items" db=0.2ms queue=0.1ms idle=11.4ms SELECT count(m0."id") FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND NOT (m0."media_filepath" IS NULL)) [16] 14:54:58.164 [debug] QUERY OK source="media_items" db=2.6ms queue=0.1ms idle=10.0ms SELECT m0."id", m0."title", m0."uploaded_at", m0."prevent_download", m0."last_error" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND NOT (m0."media_filepath" IS NULL)) ORDER BY m0."uploaded_at" DESC LIMIT ? OFFSET ? [16, 10, 0] 14:54:58.168 [debug] QUERY OK source="sources" db=0.9ms idle=12.2ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [16] 14:54:58.170 [debug] QUERY OK source="media_items" db=1.3ms queue=0.1ms idle=9.9ms SELECT count(m0."id") FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds"))))) [16] 14:54:58.175 [debug] QUERY OK source="media_items" db=4.3ms queue=0.1ms idle=11.0ms SELECT m0."id", m0."title", m0."uploaded_at", m0."prevent_download", m0."last_error" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds"))))) ORDER BY m0."uploaded_at" DESC LIMIT ? OFFSET ? [16, 10, 0] 14:54:58.180 [info] Sent 200 in 42ms 14:55:00.237 [info] GET /sources/13/media/12726/force_download 14:55:00.238 [debug] QUERY OK source="settings" db=0.4ms idle=634.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:55:00.238 [debug] QUERY OK source="settings" db=0.3ms idle=454.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:55:00.239 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 14:55:00.239 [error] #PID<0.11588.0> running PinchflatWeb.Endpoint (connection #PID<0.11587.0>, stream id 1) terminated Server: pinchflat.uiau7e.uncld.dev:80 (http) Request: GET /sources/13/media/12726/force_download ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/13/media/12726/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.11587.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/13/media/12726/force_download", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 57204}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "from" => "gptbot(at)openai.com", "host" => "pinchflat.uiau7e.uncld.dev", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.3; +https://openai.com/gptbot)", "via" => "2.0 Caddy", "x-forwarded-for" => "74.7.227.183", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https", "x-openai-host-hash" => "454925582" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.uiau7e.uncld.dev", method: "GET", owner: #PID<0.11588.0>, params: %{}, path_info: ["sources", "13", "media", "12726", "force_download"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.uiau7e.uncld.dev", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {10, 210, 0, 2}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"accept-encoding", "gzip, br, deflate"}, {"from", "gptbot(at)openai.com"}, {"host", "pinchflat.uiau7e.uncld.dev"}, {"user-agent", "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.3; +https://openai.com/gptbot)"}, {"via", "2.0 Caddy"}, {"x-forwarded-for", "74.7.227.183"}, {"x-forwarded-host", "pinchflat.uiau7e.uncld.dev"}, {"x-forwarded-proto", "https"}, {"x-openai-host-hash", "454925582"} ], request_path: "/sources/13/media/12726/force_download", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GIccTgg4ZQjBQG8AAjxh"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.11587.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/13/media/12726/force_download", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 57204}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "from" => "gptbot(at)openai.com", "host" => "pinchflat.uiau7e.uncld.dev", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.3; +https://openai.com/gptbot)", "via" => "2.0 Caddy", "x-forwarded-for" => "74.7.227.183", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https", "x-openai-host-hash" => "454925582" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/13/media/12726/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.11587.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/13/media/12726/force_download", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 57204}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "from" => "gptbot(at)openai.com", "host" => "pinchflat.uiau7e.uncld.dev", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.3; +https://openai.com/gptbot)", "via" => "2.0 Caddy", "x-forwarded-for" => "74.7.227.183", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https", "x-openai-host-hash" => "454925582" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.uiau7e.uncld.dev", method: "GET", owner: #PID<0.11588.0>, params: %{}, path_info: ["sources", "13", "media", "12726", "force_download"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.uiau7e.uncld.dev", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {10, 210, 0, 2}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"accept-en (truncated) 14:55:00.296 [info] {"source":"oban","duration":291,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 14:55:13.430 [info] {"source":"oban","duration":1589,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:55:17.657 [info] {"args":{"id":2},"id":203168,"meta":{},"system_time":1767412517657011676,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 14:55:17.657 [debug] QUERY OK source="sources" db=0.4ms idle=1873.4ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [2] 14:55:17.658 [debug] QUERY OK source="settings" db=0.3ms idle=1009.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:55:17.659 [debug] QUERY OK source="media_profiles" db=0.3ms idle=874.8ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 14:55:17.659 [debug] QUERY OK source="settings" db=0.3ms idle=8.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:55:17.659 [debug] Fetching recent media IDs from YouTube API for playlist: UUeE3lj6pLX_gCd0Yvns517Q 14:55:17.660 [debug] QUERY OK source="settings" db=0.2ms idle=2.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:55:17.660 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 14:55:18.283 [debug] QUERY OK source="media_items" db=4.9ms idle=620.4ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND m0."media_id" IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [2, "0k6I__61QDc", "tAnxIOSrasI", "qGmURDZnDhc", "vBsPoGzQPxA", "TiJoEoREmdE", "C-CkKUyzQhA", "K1UWf6n1FmY", "9VKS1P-aXSc", "kt_SNpPa2w4", "oaXa30IfZMc", "pUBcfLBwPXw", "WkG24B0xw1E", "fBQxlA3KI5U", "HbeqOllBS9o", "li1fOq_qqHM", "rsqGEZeczYw", "d7HFMZOp0S4", "oipxUVJUZrc", "cTxE_oPyD9Q", "yJlKrUX8Bvk", "pYtoIdfLeHA", "qPMGKmyQ1AA", "7W651YDFjhc", "EfUXdMBXauI", "804ky1qeBuE", "DRMng-9g9Ng", "Nzp4LPVF_7M", "1psbOjlzkyA", "IwMM9c9Q0Pw", "xhbzG8V0eSA", "-CSyf5_q-XQ", "C__g4XPdYRY", "7-FRyPsqWG0", "0-fliBPsvZI", "xLZYbjMl3hY", "qs36351JQys", "-aty2xx6kTI", "Ty7NA3HvUsk", "w6xdmHLxzSM", "-5YmR5lvMlQ", "fFbRmFdCoYc", "XkPAB-oXAoU", "rTecGGMrRKc", "tHjU0F1najQ", "Z6otzigVvWM", "9m36Ncgctbg", "B1KUJbbpoK0", "rqGLjKlA_tM", "PZDZuoa3kJE", ...] 14:55:18.300 [debug] QUERY OK source="media_items" db=15.8ms idle=626.3ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [2] 14:55:18.305 [debug] QUERY OK source="tasks" db=1.2ms idle=644.4ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [203192, 2, ~U[2026-01-03 03:55:18Z], ~U[2026-01-03 03:55:18Z]] 14:55:18.306 [info] {"args":{"id":2},"id":203168,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":649080,"event":"job:stop","queue_time":235317,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 14:55:21.670 [info] {"args":{"id":22},"id":203169,"meta":{},"system_time":1767412521669899781,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 14:55:21.670 [debug] QUERY OK source="sources" db=0.5ms idle=1886.3ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [22] 14:55:21.671 [debug] QUERY OK source="settings" db=0.5ms idle=1887.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:55:21.672 [debug] QUERY OK source="media_profiles" db=0.4ms idle=1014.9ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 14:55:21.673 [debug] QUERY OK source="settings" db=0.3ms idle=11.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:55:21.673 [debug] Fetching recent media IDs from YouTube API for playlist: UUP1RHyOhO98Yn2rMbDBirxA 14:55:21.674 [debug] QUERY OK source="settings" db=0.2ms queue=0.1ms idle=3.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:55:21.674 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 14:55:22.013 [debug] QUERY OK source="media_items" db=1.3ms queue=0.1ms idle=340.9ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND m0."media_id" IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [22, "N5RzDzO54gQ", "5glegyagphQ", "VtiV_RfFqNM", "qNYyH7bMcbI", "MPdiQsg_zQ8", "4-VOc2Aich8", "gMrBK9rp6As", "p0lqYk8_uMI", "aKpQHxUiwxc", "KsuhL0zVo3I", "pCJcoGDsbxc", "_5AR-GKeqlk", "VcJG7rIOjb0", "vRzAE_0VnXQ", "uj_bcWLWMtw", "xRyiudwo_jM", "pTMRT4CRUoM", "W8_LEBSOsPg", "YZuP7d99kCw"] 14:55:22.016 [debug] QUERY OK source="settings" db=0.3ms idle=344.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:55:22.016 [debug] QUERY OK source="settings" db=0.4ms idle=343.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:55:22.017 [debug] Running yt-dlp command for action: get_media_attributes 14:55:22.018 [debug] QUERY OK source="settings" db=0.3ms idle=344.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:55:22.018 [debug] QUERY OK source="settings" db=0.2ms idle=344.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:55:22.019 [debug] QUERY OK source="settings" db=0.2ms idle=5.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:55:22.020 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=gMrBK9rp6As --simulate --skip-download --output /downloads/White Raven/Season %(upload_date>%Y)S/s%(upload_date>%Y)Se%(upload_date>%m%d)S00 - %(title)S.%(ext)S --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --print-to-file %(.{id,title,live_status,original_url,description,aspect_ratio,duration,upload_date,timestamp,playlist_index,filename})j /tmp/pinchflat/data/50/96/509669a04b81c6f2966ecab71f96a59d15754aa2e64c06f919e75ea94e796085.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:55:26.612 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=gMrBK9rp6As --simulate --skip-download --output /downloads/White Raven/Season %(upload_date>%Y)S/s%(upload_date>%Y)Se%(upload_date>%m%d)S00 - %(title)S.%(ext)S --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --print-to-file %(.{id,title,live_status,original_url,description,aspect_ratio,duration,upload_date,timestamp,playlist_index,filename})j /tmp/pinchflat/data/50/96/509669a04b81c6f2966ecab71f96a59d15754aa2e64c06f919e75ea94e796085.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 1 with: ERROR: [youtube] gMrBK9rp6As: Offline. 14:55:26.612 [error] Error creating media item 'gMrBK9rp6As' from URL: {:error, "ERROR: [youtube] gMrBK9rp6As: Offline.\n", 1} 14:55:26.613 [debug] QUERY OK source="media_items" db=0.5ms queue=0.1ms idle=941.2ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [22] 14:55:26.617 [debug] QUERY OK source="tasks" db=0.4ms idle=832.4ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [203193, 22, ~U[2026-01-03 03:55:26Z], ~U[2026-01-03 03:55:26Z]] 14:55:26.618 [info] {"args":{"id":22},"id":203169,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":4947519,"event":"job:stop","queue_time":900786,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 14:55:43.433 [info] {"source":"oban","duration":2912,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:55:47.831 [info] GET /sources/21/force_redownload 14:55:47.831 [info] GET /sources/6/edit 14:55:47.831 [debug] Processing with PinchflatWeb.Sources.SourceController.edit/2 Parameters: %{"id" => "6"} Pipelines: [:browser] 14:55:47.832 [debug] QUERY OK source="settings" db=0.8ms idle=1047.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:55:47.833 [debug] QUERY OK source="sources" db=1.2ms idle=84.2ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [6] 14:55:47.833 [debug] QUERY OK source="settings" db=0.8ms idle=48.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:55:47.833 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 14:55:47.834 [debug] QUERY OK source="media_profiles" db=1.0ms queue=0.1ms idle=49.7ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at" FROM "media_profiles" AS m0 ORDER BY m0."name" [] 14:55:47.836 [debug] QUERY OK source="settings" db=1.1ms queue=0.1ms idle=51.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:55:47.838 [debug] QUERY OK source="settings" db=0.5ms queue=0.6ms idle=4.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:55:47.839 [debug] QUERY OK source="settings" db=0.2ms idle=5.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:55:47.834 [error] #PID<0.11598.0> running PinchflatWeb.Endpoint (connection #PID<0.11596.0>, stream id 1) terminated Server: pinchflat.suranyami.com:80 (http) Request: GET /sources/21/force_redownload ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/21/force_redownload (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.11596.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/21/force_redownload", host: "pinchflat.suranyami.com", peer: {{10, 210, 0, 2}, 41384}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, zstd, deflate", "host" => "pinchflat.suranyami.com", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)", "via" => "2.0 Caddy", "x-forwarded-for" => "216.73.216.55", "x-forwarded-host" => "pinchflat.suranyami.com", "x-forwarded-proto" => "https" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.suranyami.com", method: "GET", owner: #PID<0.11598.0>, params: %{}, path_info: ["sources", "21", "force_redownload"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.suranyami.com", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {10, 210, 0, 2}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"accept-encoding", "gzip, br, zstd, deflate"}, {"host", "pinchflat.suranyami.com"}, {"user-agent", "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)"}, {"via", "2.0 Caddy"}, {"x-forwarded-for", "216.73.216.55"}, {"x-forwarded-host", "pinchflat.suranyami.com"}, {"x-forwarded-proto", "https"} ], request_path: "/sources/21/force_redownload", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GIccWR0NJHT0aooAAj1B"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.11596.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/21/force_redownload", host: "pinchflat.suranyami.com", peer: {{10, 210, 0, 2}, 41384}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, zstd, deflate", "host" => "pinchflat.suranyami.com", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)", "via" => "2.0 Caddy", "x-forwarded-for" => "216.73.216.55", "x-forwarded-host" => "pinchflat.suranyami.com", "x-forwarded-proto" => "https" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/21/force_redownload (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.11596.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/21/force_redownload", host: "pinchflat.suranyami.com", peer: {{10, 210, 0, 2}, 41384}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, zstd, deflate", "host" => "pinchflat.suranyami.com", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)", "via" => "2.0 Caddy", "x-forwarded-for" => "216.73.216.55", "x-forwarded-host" => "pinchflat.suranyami.com", "x-forwarded-proto" => "https" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.suranyami.com", method: "GET", owner: #PID<0.11598.0>, params: %{}, path_info: ["sources", "21", "force_redownload"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.suranyami.com", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {10, 210, 0, 2}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"accept-encoding", "gzip, br, zstd, deflate"}, {"host", "pinchflat.suranyami.com"}, {"user-agent", "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)"}, {"via", "2.0 Caddy"}, {"x-forwarded-for", "216.73.216.55"}, {"x-forwarded-host", "pinchflat.suranyami.com"}, {"x-forwarded-proto", "https"} ], request_path: "/sources/21/force_redownload (truncated) 14:55:47.842 [info] Sent 200 in 10ms 14:55:48.301 [info] GET /sources/27 14:55:48.302 [debug] Processing with PinchflatWeb.Sources.SourceController.show/2 Parameters: %{"id" => "27"} Pipelines: [:browser] 14:55:48.303 [debug] QUERY OK source="sources" db=0.8ms queue=0.1ms idle=469.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [27] 14:55:48.305 [debug] QUERY OK source="media_profiles" db=0.4ms queue=0.2ms idle=469.5ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 14:55:48.306 [debug] QUERY OK source="tasks" db=0.3ms idle=469.0ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at" FROM "tasks" AS t0 INNER JOIN "oban_jobs" AS o1 ON o1."id" = t0."job_id" WHERE (t0."source_id" = ?) AND (o1."state" IN (?,?,?,?)) [27, "executing", "available", "scheduled", "retryable"] 14:55:48.306 [debug] QUERY OK source="settings" db=0.2ms idle=468.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:55:48.307 [debug] QUERY OK source="settings" db=0.2ms idle=468.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:55:48.308 [debug] QUERY OK source="settings" db=0.3ms idle=3.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:55:48.312 [debug] QUERY OK source="sources" db=0.3ms idle=6.5ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [27] 14:55:48.315 [debug] QUERY OK source="media_items" db=2.4ms idle=6.6ms SELECT count(m0."id") FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [27] 14:55:48.322 [debug] QUERY OK source="media_items" db=6.3ms idle=8.5ms SELECT m0."id", m0."title", m0."uploaded_at", m0."prevent_download", m0."last_error" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) ORDER BY m0."uploaded_at" DESC LIMIT ? OFFSET ? [27, 10, 0] 14:55:48.325 [debug] QUERY OK source="sources" db=0.8ms queue=0.1ms idle=17.5ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [27] 14:55:48.327 [debug] QUERY OK source="media_items" db=0.9ms idle=18.2ms SELECT count(m0."id") FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND NOT (m0."media_filepath" IS NULL)) [27] 14:55:48.331 [debug] QUERY OK source="media_items" db=3.4ms idle=15.4ms SELECT m0."id", m0."title", m0."uploaded_at", m0."prevent_download", m0."last_error" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND NOT (m0."media_filepath" IS NULL)) ORDER BY m0."uploaded_at" DESC LIMIT ? OFFSET ? [27, 10, 0] 14:55:48.333 [debug] QUERY OK source="sources" db=0.6ms queue=0.1ms idle=17.5ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [27] 14:55:48.336 [debug] QUERY OK source="media_items" db=2.3ms idle=12.1ms SELECT count(m0."id") FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds"))))) [27] 14:55:48.342 [debug] QUERY OK source="media_items" db=5.3ms idle=10.9ms SELECT m0."id", m0."title", m0."uploaded_at", m0."prevent_download", m0."last_error" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds"))))) ORDER BY m0."uploaded_at" DESC LIMIT ? OFFSET ? [27, 10, 0] 14:55:48.344 [info] Sent 200 in 42ms 14:55:48.805 [info] GET /sources/12 14:55:48.806 [debug] Processing with PinchflatWeb.Sources.SourceController.show/2 Parameters: %{"id" => "12"} Pipelines: [:browser] 14:55:48.807 [debug] QUERY OK source="sources" db=0.6ms queue=0.1ms idle=476.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [12] 14:55:48.809 [debug] QUERY OK source="media_profiles" db=0.4ms queue=0.1ms idle=475.2ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 14:55:48.809 [debug] QUERY OK source="tasks" db=0.3ms idle=472.9ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at" FROM "tasks" AS t0 INNER JOIN "oban_jobs" AS o1 ON o1."id" = t0."job_id" WHERE (t0."source_id" = ?) AND (o1."state" IN (?,?,?,?)) [12, "executing", "available", "scheduled", "retryable"] 14:55:48.810 [debug] QUERY OK source="oban_jobs" db=0.2ms idle=467.9ms SELECT o0."id", o0."state", o0."queue", o0."worker", o0."args", o0."meta", o0."tags", o0."errors", o0."attempt", o0."attempted_by", o0."max_attempts", o0."priority", o0."attempted_at", o0."cancelled_at", o0."completed_at", o0."discarded_at", o0."inserted_at", o0."scheduled_at", o0."id" FROM "oban_jobs" AS o0 WHERE (o0."id" = ?) [201985] 14:55:48.810 [debug] QUERY OK source="settings" db=0.2ms idle=59.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:55:48.811 [debug] QUERY OK source="settings" db=0.2ms queue=0.1ms idle=3.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:55:48.812 [debug] QUERY OK source="settings" db=0.4ms idle=2.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:55:48.815 [debug] QUERY OK source="sources" db=0.9ms idle=4.4ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [12] 14:55:48.826 [debug] QUERY OK source="media_items" db=10.7ms idle=5.2ms SELECT count(m0."id") FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [12] 14:55:48.832 [debug] QUERY OK source="media_items" db=5.4ms queue=0.1ms idle=15.6ms SELECT m0."id", m0."title", m0."uploaded_at", m0."prevent_download", m0."last_error" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) ORDER BY m0."uploaded_at" DESC LIMIT ? OFFSET ? [12, 10, 0] 14:55:48.833 [debug] QUERY OK source="sources" db=0.3ms idle=21.4ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [12] 14:55:48.833 [debug] QUERY OK source="media_items" db=0.3ms idle=20.9ms SELECT count(m0."id") FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND NOT (m0."media_filepath" IS NULL)) [12] 14:55:48.837 [debug] QUERY OK source="media_items" db=3.7ms idle=18.8ms SELECT m0."id", m0."title", m0."uploaded_at", m0."prevent_download", m0."last_error" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND NOT (m0."media_filepath" IS NULL)) ORDER BY m0."uploaded_at" DESC LIMIT ? OFFSET ? [12, 10, 0] 14:55:48.839 [debug] QUERY OK source="sources" db=0.3ms idle=12.5ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [12] 14:55:48.841 [debug] QUERY OK source="media_items" db=1.5ms idle=7.4ms SELECT count(m0."id") FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds"))))) [12] 14:55:48.846 [debug] QUERY OK source="media_items" db=4.5ms idle=8.2ms SELECT m0."id", m0."title", m0."uploaded_at", m0."prevent_download", m0."last_error" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds"))))) ORDER BY m0."uploaded_at" DESC LIMIT ? OFFSET ? [12, 10, 0] 14:55:48.847 [info] Sent 200 in 41ms 14:56:00.297 [info] {"source":"oban","duration":268,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 14:56:01.332 [info] GET /sources/23/media/21389/force_download 14:56:01.333 [debug] QUERY OK source="settings" db=0.4ms queue=0.1ms idle=1035.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:56:01.333 [debug] QUERY OK source="settings" db=0.2ms queue=0.2ms idle=552.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:56:01.334 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 14:56:01.335 [error] #PID<0.11603.0> running PinchflatWeb.Endpoint (connection #PID<0.11602.0>, stream id 1) terminated Server: pinchflat.uiau7e.uncld.dev:80 (http) Request: GET /sources/23/media/21389/force_download ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/23/media/21389/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.11602.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/23/media/21389/force_download", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 38740}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "from" => "gptbot(at)openai.com", "host" => "pinchflat.uiau7e.uncld.dev", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.3; +https://openai.com/gptbot)", "via" => "2.0 Caddy", "x-forwarded-for" => "74.7.227.183", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https", "x-openai-host-hash" => "454925582" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.uiau7e.uncld.dev", method: "GET", owner: #PID<0.11603.0>, params: %{}, path_info: ["sources", "23", "media", "21389", "force_download"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.uiau7e.uncld.dev", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {10, 210, 0, 2}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"accept-encoding", "gzip, br, deflate"}, {"from", "gptbot(at)openai.com"}, {"host", "pinchflat.uiau7e.uncld.dev"}, {"user-agent", "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.3; +https://openai.com/gptbot)"}, {"via", "2.0 Caddy"}, {"x-forwarded-for", "74.7.227.183"}, {"x-forwarded-host", "pinchflat.uiau7e.uncld.dev"}, {"x-forwarded-proto", "https"}, {"x-openai-host-hash", "454925582"} ], request_path: "/sources/23/media/21389/force_download", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GIccXEHB945mnDAAAj3h"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.11602.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/23/media/21389/force_download", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 38740}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "from" => "gptbot(at)openai.com", "host" => "pinchflat.uiau7e.uncld.dev", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.3; +https://openai.com/gptbot)", "via" => "2.0 Caddy", "x-forwarded-for" => "74.7.227.183", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https", "x-openai-host-hash" => "454925582" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/23/media/21389/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.11602.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/23/media/21389/force_download", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 38740}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "from" => "gptbot(at)openai.com", "host" => "pinchflat.uiau7e.uncld.dev", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.3; +https://openai.com/gptbot)", "via" => "2.0 Caddy", "x-forwarded-for" => "74.7.227.183", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https", "x-openai-host-hash" => "454925582" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.uiau7e.uncld.dev", method: "GET", owner: #PID<0.11603.0>, params: %{}, path_info: ["sources", "23", "media", "21389", "force_download"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.uiau7e.uncld.dev", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {10, 210, 0, 2}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"accept-en (truncated) 14:56:13.436 [info] {"source":"oban","duration":1533,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:56:13.823 [info] {"args":{"id":26},"id":203170,"meta":{},"system_time":1767412573823402291,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 14:56:13.824 [debug] QUERY OK source="sources" db=0.8ms idle=1039.8ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [26] 14:56:13.825 [debug] QUERY OK source="settings" db=0.6ms idle=1011.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:56:13.827 [debug] QUERY OK source="media_profiles" db=1.4ms idle=389.6ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 14:56:13.828 [debug] QUERY OK source="settings" db=0.7ms idle=11.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:56:13.828 [debug] Fetching recent media IDs from YouTube API for playlist: UU6NY7eg1FxCfAVX58yL0cJw 14:56:13.829 [debug] QUERY OK source="settings" db=0.3ms idle=5.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:56:13.829 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 14:56:14.358 [debug] QUERY OK source="media_items" db=6.5ms idle=526.5ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND m0."media_id" IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [26, "o2tiLxanOd0", "3Hkalon06bY", "acwCbVzHnRM", "m3Cddar422Y", "QItYx18RK4M", "iFrwlymvtTM", "CBKzBKWhNmE", "twi0ZP1ZWew", "MChkfGtdrgI", "usOf_0SOPl8", "7CamgxCV_lg", "CYW3qAtbiSg", "hkLPA0MEUFk", "Z9APq63an58", "MA2a2BtDQtE", "a23hasz0yk8", "o4tK4PhiK_c", "2-lUv1_A_KU", "W6GGXQ4xVdg", "TOIuoWmEqxo", "JRXSDo6asDk", "iAodr4mipf0", "12wArTNB9dk", "CFZ0TtEbofU", "RwW6yAVtf6Q", "9RshF2jpgLo", "MV8U7XQUpnY", "G0o-l5G0M4s", "FVOkr5w0O0I", "1IFJive9Bvc", "kuc2kAgYD8M", "jHOE86EMHvA", "CjuPAweX08c", "LH0RNHxukJs", "o6OxlF4vAuw", "Qxfr7h-PzdA", "xU_1w6OSnac", "-6G1TNBxp08", "o-ripoq_oXU", "Uevcwu2GLMs", "BAoXgNQ_wRI", "p4NWPk9B20I", "XKxqsR_4w_I", "BNtAWc-vLX4", "ktw-dS-26Gk", "Idbcu-oVtDs", "JCxqgAhaJj4", "A0vzWxUO5TA", "6M0wfDl0LEI", ...] 14:56:14.367 [debug] QUERY OK source="media_items" db=3.4ms queue=0.1ms idle=537.5ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [26] 14:56:14.371 [debug] QUERY OK source="tasks" db=0.8ms idle=541.1ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [203194, 26, ~U[2026-01-03 03:56:14Z], ~U[2026-01-03 03:56:14Z]] 14:56:14.372 [info] {"args":{"id":26},"id":203170,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":547880,"event":"job:stop","queue_time":320264,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 14:56:28.311 [info] GET / 14:56:28.312 [debug] Processing with PinchflatWeb.Pages.PageController.home/2 Parameters: %{} Pipelines: [:browser] 14:56:28.312 [debug] QUERY OK source="settings" db=0.5ms idle=528.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:56:28.313 [debug] QUERY OK source="media_profiles" db=0.2ms idle=529.1ms SELECT count(m0."id") FROM "media_profiles" AS m0 [] 14:56:28.313 [debug] QUERY OK source="sources" db=0.2ms idle=529.5ms SELECT count(s0."id") FROM "sources" AS s0 [] 14:56:28.375 [debug] QUERY OK source="media_items" db=61.6ms idle=529.8ms SELECT sum(m0."media_size_bytes") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 14:56:28.386 [debug] QUERY OK source="media_items" db=10.2ms queue=0.1ms idle=500.1ms SELECT count(m0."id") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 14:56:28.387 [debug] QUERY OK source="settings" db=0.4ms queue=0.1ms idle=74.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:56:28.388 [debug] QUERY OK source="settings" db=0.3ms idle=74.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:56:28.389 [debug] QUERY OK source="settings" db=0.6ms queue=0.1ms idle=75.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:56:28.400 [debug] QUERY OK source="media_items" db=9.9ms idle=14.9ms SELECT count(m0."id") FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE (NOT (m0."media_filepath" IS NULL)) [] 14:56:28.402 [debug] QUERY OK source="media_items" db=1.7ms queue=0.1ms idle=14.3ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE (NOT (m0."media_filepath" IS NULL)) ORDER BY m0."id" DESC LIMIT ? OFFSET ? [5, 0] 14:56:28.404 [debug] QUERY OK source="sources" db=0.9ms idle=15.7ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" IN (?,?,?,?)) [18, 21, 15, 24] 14:56:28.465 [debug] QUERY OK source="media_items" db=58.5ms idle=18.4ms SELECT count(m0."id") FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds"))) [] 14:56:28.468 [debug] QUERY OK source="media_items" db=2.4ms queue=0.1ms idle=75.6ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds"))) ORDER BY m0."id" DESC LIMIT ? OFFSET ? [5, 0] 14:56:28.469 [debug] QUERY OK source="sources" db=0.5ms idle=68.1ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" IN (?,?)) [27, 5] 14:56:28.472 [debug] QUERY OK source="tasks" db=0.4ms idle=68.7ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", o1."id", o1."state", o1."queue", o1."worker", o1."args", o1."meta", o1."tags", o1."errors", o1."attempt", o1."attempted_by", o1."max_attempts", o1."priority", o1."attempted_at", o1."cancelled_at", o1."completed_at", o1."discarded_at", o1."inserted_at", o1."scheduled_at" FROM "tasks" AS t0 LEFT OUTER JOIN "oban_jobs" AS o1 ON o1."id" = t0."job_id" WHERE (o1."state" IN (?)) AND (? IN (SELECT value FROM JSON_EACH(o1."tags"))) ORDER BY o1."attempted_at" DESC ["executing", "show_in_dashboard"] 14:56:28.473 [info] Sent 200 in 161ms 14:56:33.076 [info] GET /sources/1/edit 14:56:33.076 [debug] Processing with PinchflatWeb.Sources.SourceController.edit/2 Parameters: %{"id" => "1"} Pipelines: [:browser] 14:56:33.077 [debug] QUERY OK source="sources" db=0.4ms idle=1292.4ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 14:56:33.078 [debug] QUERY OK source="media_profiles" db=0.4ms idle=1293.2ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at" FROM "media_profiles" AS m0 ORDER BY m0."name" [] 14:56:33.078 [debug] QUERY OK source="settings" db=0.3ms queue=0.1ms idle=1294.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:56:33.079 [debug] QUERY OK source="settings" db=0.4ms idle=1191.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:56:33.080 [debug] QUERY OK source="settings" db=0.3ms idle=189.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:56:33.082 [info] GET /sources/21/sync_files_on_disk 14:56:33.083 [debug] QUERY OK source="settings" db=0.5ms queue=0.1ms idle=5.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:56:33.084 [info] Sent 200 in 8ms 14:56:33.084 [debug] QUERY OK source="settings" db=0.5ms queue=0.1ms idle=6.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:56:33.085 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 14:56:33.085 [error] #PID<0.11611.0> running PinchflatWeb.Endpoint (connection #PID<0.11610.0>, stream id 1) terminated Server: pinchflat.suranyami.com:80 (http) Request: GET /sources/21/sync_files_on_disk ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/21/sync_files_on_disk (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.11610.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/21/sync_files_on_disk", host: "pinchflat.suranyami.com", peer: {{10, 210, 0, 2}, 54486}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, zstd, deflate", "host" => "pinchflat.suranyami.com", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)", "via" => "2.0 Caddy", "x-forwarded-for" => "216.73.216.55", "x-forwarded-host" => "pinchflat.suranyami.com", "x-forwarded-proto" => "https" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.suranyami.com", method: "GET", owner: #PID<0.11611.0>, params: %{}, path_info: ["sources", "21", "sync_files_on_disk"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.suranyami.com", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {10, 210, 0, 2}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"accept-encoding", "gzip, br, zstd, deflate"}, {"host", "pinchflat.suranyami.com"}, {"user-agent", "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)"}, {"via", "2.0 Caddy"}, {"x-forwarded-for", "216.73.216.55"}, {"x-forwarded-host", "pinchflat.suranyami.com"}, {"x-forwarded-proto", "https"} ], request_path: "/sources/21/sync_files_on_disk", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GIccY6Y72C6WA4MAAj6h"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.11610.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/21/sync_files_on_disk", host: "pinchflat.suranyami.com", peer: {{10, 210, 0, 2}, 54486}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, zstd, deflate", "host" => "pinchflat.suranyami.com", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)", "via" => "2.0 Caddy", "x-forwarded-for" => "216.73.216.55", "x-forwarded-host" => "pinchflat.suranyami.com", "x-forwarded-proto" => "https" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/21/sync_files_on_disk (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.11610.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/21/sync_files_on_disk", host: "pinchflat.suranyami.com", peer: {{10, 210, 0, 2}, 54486}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, zstd, deflate", "host" => "pinchflat.suranyami.com", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)", "via" => "2.0 Caddy", "x-forwarded-for" => "216.73.216.55", "x-forwarded-host" => "pinchflat.suranyami.com", "x-forwarded-proto" => "https" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.suranyami.com", method: "GET", owner: #PID<0.11611.0>, params: %{}, path_info: ["sources", "21", "sync_files_on_disk"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.suranyami.com", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {10, 210, 0, 2}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"accept-encoding", "gzip, br, zstd, deflate"}, {"host", "pinchflat.suranyami.com"}, {"user-agent", "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)"}, {"via", "2.0 Caddy"}, {"x-forwarded-for", "216.73.216.55"}, {"x-forwarded-host", "pinchflat.suranyami.com"}, {"x-forwarded-proto", "https"} ], request_path: "/sources/2 (truncated) 14:56:33.437 [info] GET /sources/new 14:56:33.438 [debug] Processing with PinchflatWeb.Sources.SourceController.new/2 Parameters: %{} Pipelines: [:browser] 14:56:33.440 [debug] QUERY OK source="media_profiles" db=1.2ms queue=0.1ms idle=359.7ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at" FROM "media_profiles" AS m0 ORDER BY m0."name" [] 14:56:33.440 [debug] QUERY OK source="settings" db=0.3ms idle=361.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:56:33.441 [debug] QUERY OK source="settings" db=0.3ms idle=360.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:56:33.442 [debug] QUERY OK source="settings" db=0.3ms idle=358.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:56:33.443 [debug] QUERY OK source="settings" db=0.2ms idle=358.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:56:33.444 [debug] QUERY OK source="settings" db=0.4ms idle=3.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:56:33.448 [info] Sent 200 in 10ms 14:56:33.939 [info] GET /sources/5/edit 14:56:33.939 [debug] Processing with PinchflatWeb.Sources.SourceController.edit/2 Parameters: %{"id" => "5"} Pipelines: [:browser] 14:56:33.941 [debug] QUERY OK source="sources" db=0.5ms queue=0.1ms idle=498.6ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [5] 14:56:33.942 [debug] QUERY OK source="media_profiles" db=0.3ms idle=499.3ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at" FROM "media_profiles" AS m0 ORDER BY m0."name" [] 14:56:33.943 [debug] QUERY OK source="settings" db=0.2ms queue=0.1ms idle=499.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:56:33.943 [debug] QUERY OK source="settings" db=0.2ms idle=498.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:56:33.945 [debug] QUERY OK source="settings" db=0.2ms queue=0.1ms idle=50.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:56:33.952 [info] Sent 200 in 13ms 14:56:40.487 [info] GET /sources/27/edit 14:56:40.487 [debug] Processing with PinchflatWeb.Sources.SourceController.edit/2 Parameters: %{"id" => "27"} Pipelines: [:browser] 14:56:40.488 [debug] QUERY OK source="sources" db=0.3ms queue=0.1ms idle=703.6ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [27] 14:56:40.488 [debug] QUERY OK source="media_profiles" db=0.3ms queue=0.1ms idle=704.4ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at" FROM "media_profiles" AS m0 ORDER BY m0."name" [] 14:56:40.489 [debug] QUERY OK source="settings" db=0.4ms idle=705.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:56:40.490 [debug] QUERY OK source="settings" db=0.4ms idle=705.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:56:40.491 [debug] QUERY OK source="settings" db=0.3ms idle=582.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:56:40.496 [info] Sent 200 in 9ms 14:56:40.509 [info] GET /sources/12/edit 14:56:40.509 [debug] Processing with PinchflatWeb.Sources.SourceController.edit/2 Parameters: %{"id" => "12"} Pipelines: [:browser] 14:56:40.510 [debug] QUERY OK source="sources" db=0.5ms idle=21.4ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [12] 14:56:40.511 [debug] QUERY OK source="media_profiles" db=0.5ms idle=21.5ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at" FROM "media_profiles" AS m0 ORDER BY m0."name" [] 14:56:40.511 [debug] QUERY OK source="settings" db=0.2ms idle=21.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:56:40.512 [debug] QUERY OK source="settings" db=0.2ms idle=21.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:56:40.512 [debug] QUERY OK source="settings" db=0.2ms idle=21.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:56:40.518 [info] Sent 200 in 8ms 14:56:41.519 [info] GET /sources/16/edit 14:56:41.520 [debug] Processing with PinchflatWeb.Sources.SourceController.edit/2 Parameters: %{"id" => "16"} Pipelines: [:browser] 14:56:41.522 [debug] QUERY OK source="sources" db=1.2ms queue=0.1ms idle=1010.1ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [16] 14:56:41.524 [debug] QUERY OK source="media_profiles" db=0.8ms queue=0.1ms idle=1011.5ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at" FROM "media_profiles" AS m0 ORDER BY m0."name" [] 14:56:41.525 [debug] QUERY OK source="settings" db=0.5ms idle=1012.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:56:41.525 [debug] QUERY OK source="settings" db=0.4ms idle=1012.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:56:41.527 [debug] QUERY OK source="settings" db=0.4ms idle=614.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:56:41.532 [info] Sent 200 in 12ms 14:56:43.438 [info] {"source":"oban","duration":1274,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:56:47.939 [info] {"args":{"id":6},"id":203171,"meta":{},"system_time":1767412607939829157,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 14:56:47.941 [debug] QUERY OK source="sources" db=0.7ms idle=1156.1ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [6] 14:56:47.944 [debug] QUERY OK source="settings" db=3.4ms idle=1157.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:56:47.945 [debug] QUERY OK source="media_profiles" db=0.6ms idle=1018.8ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 14:56:47.946 [debug] QUERY OK source="settings" db=0.3ms idle=16.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:56:47.946 [debug] Fetching recent media IDs from YouTube API for playlist: UUg0m_Ah8P_MQbnn77-vYnYw 14:56:47.946 [debug] QUERY OK source="settings" db=0.1ms idle=6.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:56:47.946 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 14:56:48.536 [debug] QUERY OK source="media_items" db=2.7ms idle=592.0ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND m0."media_id" IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [6, "9i6Qm3LV89c", "2PC3HH4izX4", "dJLpdoPNdZ8", "lqRHAbkn9bo", "nlYgNjtr904", "uHKLZ8LcCJA", "V3LW3EWUxqE", "XaTvV6zJEXk", "AjnHxtnxMhk", "vuJTLm11QmQ", "vUzRuvCi6lw", "NlxSd2y_gfI", "ivcFXtMGdE8", "m17ugzx_Ab4", "o5QiLKbHeMI", "moqdU9sMrRk", "Yi55tGTEMqQ", "rHliVvnQ5Pg", "nCZSTFM-v9k", "uasm2RENDH4", "musiLNtEyRY", "uSvqlME0IsI", "Yo0hmtg8LNc", "HOFD3h9Up9w", "uibJMXaSB7c", "NGq1EoY_r2I", "IL-UZlbO3zI", "-_txeeBP6dg", "iH7BiZvsczM", "rIKuiZVHfZo", "HRw20b6hb_s", "xOQPha-de4A", "L6IXwj-_X1k", "_7--BDD2pxk", "Xaq53-12iW8", "bfb-ZBwdvpo", "3DLbHio3ivA", "xhpwyar65ms", "UzEr8RISXds", "tHU6PeO4WDs", "2z1AaBGzA1g", "y-t3hyj7Mz8", "5ZUXEQ6d0dM", "pn8GF5HaKZc", "wH3XASrC2DA", "C_oeOAG0G5E", "c8gYHg1lZCg", "cPEXUpZ6CWk", "jST7T0L_k_w", ...] 14:56:48.543 [debug] QUERY OK source="media_items" db=4.8ms idle=593.5ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [6] 14:56:48.547 [debug] QUERY OK source="tasks" db=0.7ms idle=599.7ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [203195, 6, ~U[2026-01-03 03:56:48Z], ~U[2026-01-03 03:56:48Z]] 14:56:48.548 [info] {"args":{"id":6},"id":203171,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":607452,"event":"job:stop","queue_time":516330,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 14:57:00.298 [info] {"source":"oban","duration":653,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 14:57:02.996 [info] GET /sources/23/media/21385 14:57:02.997 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "21385", "source_id" => "23"} Pipelines: [:browser] 14:57:02.998 [debug] QUERY OK source="media_items" db=0.7ms idle=1213.3ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [21385] 14:57:02.999 [debug] QUERY OK source="tasks" db=0.3ms idle=1214.8ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [21385] 14:57:03.000 [debug] QUERY OK source="sources" db=0.7ms idle=1214.9ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [23] 14:57:03.002 [debug] QUERY OK source="settings" db=0.8ms idle=1020.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:57:03.003 [debug] QUERY OK source="settings" db=0.6ms queue=0.1ms idle=17.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:57:03.005 [debug] QUERY OK source="settings" db=0.6ms queue=0.1ms idle=5.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:57:03.007 [debug] QUERY OK source="media_profiles" db=0.8ms idle=7.2ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 14:57:03.034 [info] Sent 200 in 37ms 14:57:12.011 [info] {"args":{"id":9},"id":203172,"meta":{},"system_time":1767412632011487394,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 14:57:12.013 [debug] QUERY OK source="sources" db=0.7ms queue=0.1ms idle=1228.2ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [9] 14:57:12.014 [debug] QUERY OK source="settings" db=0.5ms idle=1229.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:57:12.014 [debug] QUERY OK source="media_profiles" db=0.6ms idle=1012.3ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 14:57:12.015 [debug] QUERY OK source="settings" db=0.5ms idle=10.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:57:12.015 [debug] Fetching recent media IDs from YouTube API for playlist: UUy0Pr5u-MwGXXzp_GDd4m_g 14:57:12.016 [debug] QUERY OK source="settings" db=0.3ms idle=4.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:57:12.016 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 14:57:12.438 [debug] QUERY OK source="media_items" db=5.0ms idle=419.7ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND m0."media_id" IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [9, "97DBlIPSMkI", "V7Q9VnfzRqE", "Nub2m3iioSw", "Tpk6NNZubqU", "L4Eh-MtBFFk", "sa8p75KJqOc", "2gpPC0vsry0", "B2l4YfAav6M", "iL1qKxcaZnU", "NH5AAcLn03o", "8fOaCUvVQpY", "8aQ7sJ9EyaY", "ld0ngHU3YQ0", "uKzsA5kc8jw", "_A1dxw_T6dw", "TFVA0Bc5ajA", "IgFSOa0RBxs", "fGAe2cenBhs", "a6_0p8e42Y4", "vnR7jnJYN-k", "db6_ragog48", "SMKDYoXrZzw", "-fM_uGwlRlU", "kRxJ2g3T0zs", "GgU7L-z0kbA", "yFZJ6Qb8mDY", "YkyTbtgcfJU", "k01ARI01oMU", "ToFKhGfGgc0", "MU8JlJIuwh4", "IY36QIh6VG8", "brtcZFHW0P4", "A39Glu9I9fk", "Ib_1jixUkLw", "c9UIDwF7oS4", "CcSE-YHRJP4", "Tpmb_mTKuhs", "yNbz6f5dMLE", "BAVQcOWZi-Y", "Fa7RxeYNUTw", "teIoBQdGT5s", "UqykI_3CT-g", "vBeWkDTK6Eg", "qOp_nyKqmic", "fEqSlPpXHYk", "lII4lxNpPVg", "BaxD8BI3wI4", "me_afppRbyI", "C69B2k3fAvs", ...] 14:57:12.446 [debug] QUERY OK source="media_items" db=6.9ms idle=425.4ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [9] 14:57:12.449 [debug] QUERY OK source="tasks" db=0.6ms idle=432.7ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [203196, 9, ~U[2026-01-03 03:57:12Z], ~U[2026-01-03 03:57:12Z]] 14:57:12.450 [info] {"args":{"id":9},"id":203172,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":438552,"event":"job:stop","queue_time":472182,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 14:57:13.440 [info] {"source":"oban","duration":1405,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:57:29.063 [info] {"args":{"id":11},"id":203173,"meta":{},"system_time":1767412649062865364,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 14:57:29.064 [debug] QUERY OK source="sources" db=0.9ms queue=0.1ms idle=1279.1ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [11] 14:57:29.066 [debug] QUERY OK source="settings" db=0.6ms queue=0.1ms idle=1015.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:57:29.067 [debug] QUERY OK source="media_profiles" db=0.8ms queue=0.1ms idle=282.1ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 14:57:29.068 [debug] QUERY OK source="settings" db=0.6ms queue=0.1ms idle=13.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:57:29.068 [debug] Fetching recent media IDs from YouTube API for playlist: UUJ901NqoRaXMnIm7aOjLyuA 14:57:29.069 [debug] QUERY OK source="settings" db=0.4ms idle=6.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:57:29.069 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 14:57:29.604 [debug] QUERY OK source="media_items" db=5.9ms idle=533.7ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND m0."media_id" IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [11, "1ji7g8qZJ_4", "xP5WmZg7OMg", "HBoV87Jndh8", "-zpzRklxMEo", "9AX85j6Lp4M", "p2U9d4FWDaI", "hfT6XVSa2xE", "qBOKYwe8NzA", "Cf5jL5JNq7k", "bAV0y2acB9c", "XE6JvrChQ_Q", "Efv456Ks9ms", "qgiJ4C5s46U", "KaVC_mTFqHk", "M6gat-hai0I", "_xwFJzOtQv0", "Ao-M_YvfhXY", "SKHWQwf0ago", "gmuFtWZG3v8", "H4oeJ87TMt4", "rS2fDo6mhS8", "aOF6Pe_bTeI", "x8B3Z91qkoE", "fVvYTWAHoBQ", "8r6xqWTqcPQ", "k677A--BwGE", "CSTtrz8t1eg", "w6Ej3Iim4Ic", "jO8S8_KX6p0", "tslsVdOjWFM", "dckL2BCDYmQ", "E3N8_pRRtGM", "qeOEDUgy5xA", "MIPvNqPwMxc", "V2GelRPp5fg", "jWH5H6Y6T-A", "1ObIAwtqt9k", "yVdv1xVggZ4", "Pxpz4211gMI", "UEUAHI0AZu4", "gitCR-iTofw", "eTg2rHYqUZc", "QnOIm4U7Dzs", "RYNFRbP4OWQ", "R3kNCz120XM", "vMflt2fJZYw", "4DkhBa_L_4E", "4IqFTPw6Mzk", "AepfCktyPLk", ...] 14:57:29.616 [debug] QUERY OK source="media_items" db=10.5ms idle=540.1ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [11] 14:57:29.624 [debug] QUERY OK source="tasks" db=1.2ms idle=18.9ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [203197, 11, ~U[2026-01-03 03:57:29Z], ~U[2026-01-03 03:57:29Z]] 14:57:29.626 [info] {"args":{"id":11},"id":203173,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":561994,"event":"job:stop","queue_time":447436,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 14:57:33.079 [info] {"args":{"id":10},"id":203174,"meta":{},"system_time":1767412653079690695,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 14:57:33.081 [debug] QUERY OK source="sources" db=0.7ms idle=295.9ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [10] 14:57:33.082 [debug] QUERY OK source="settings" db=0.4ms idle=297.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:57:33.082 [debug] QUERY OK source="media_profiles" db=0.5ms idle=297.8ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 14:57:33.083 [debug] QUERY OK source="settings" db=0.3ms idle=11.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:57:33.083 [debug] Fetching recent media IDs from YouTube API for playlist: UUmHz7DQbbkcY_UoWY8bBJLw 14:57:33.084 [debug] QUERY OK source="settings" db=0.3ms queue=0.1ms idle=4.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:57:33.084 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 14:57:33.464 [debug] QUERY OK source="media_items" db=2.5ms idle=380.9ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND m0."media_id" IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [10, "PhjtM9ePmYY", "BYRqpIciNLg", "KKoDQ42Fcpk", "AifAIqHezb8", "sjsS60OTXSQ", "KVouvdlUtGQ", "Th4RJNVZN3Q", "a9Zj-iWYC4w", "Z2_oFD9DMd0", "OW9WywZF_d4", "hFSwWzxrqUA", "XsPrNwyLDJM", "9NUcKPnPMEw", "GvP1jo9RstE", "8jul3DEwgMY", "e4K0Co-JeKQ", "wxoYf3KBlis", "YFQm8Hk73ug", "iu5rnQkfO6M", "RESslu3Bhuk", "vn9VDbacUgQ", "mLozqDnhqpQ", "GWXCCBsOMSg", "OXIpbrvFxfE", "hbZb1Q0mM7k", "lj2JTO1L1Tc", "dGjMw1SkmjU", "vBQFfmlTK_4", "91WqepC8kS0", "UUZfxQhKmfA", "aPsq5nqvhxg", "AJ7atBkisOU", "2fZ0nkP5dfo", "qKZXQGCLRJY", "F26dxTMmW10", "cYPuhhATDXc", "uLrOyIpjkZ8", "kDu56nXRqGQ", "I4lBTlClwww", "h23xksD0dN0", "SgameZUfeGo", "NPgbgiRJCxA", "-v88e4T8i_E", "HkgV_-nJOuE", "3h1vM0lIrpM", "gjExqY_iB38", "5ScP_aPBEiQ", "t5CkW-CKTZs", "gKKRYcy4BbU", ...] 14:57:33.470 [debug] QUERY OK source="settings" db=0.7ms idle=387.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:57:33.471 [debug] QUERY OK source="settings" db=0.6ms queue=0.1ms idle=388.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:57:33.472 [debug] Running yt-dlp command for action: get_media_attributes 14:57:33.475 [debug] QUERY OK source="settings" db=0.2ms idle=390.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:57:33.475 [debug] QUERY OK source="settings" db=0.5ms idle=390.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:57:33.476 [debug] QUERY OK source="settings" db=0.3ms idle=11.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:57:33.476 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=Z2_oFD9DMd0 --simulate --skip-download --output /downloads/Switch Angel/Season %(upload_date>%Y)S/s%(upload_date>%Y)Se%(upload_date>%m%d)S00 - %(title)S.%(ext)S --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --print-to-file %(.{id,title,live_status,original_url,description,aspect_ratio,duration,upload_date,timestamp,playlist_index,filename})j /tmp/pinchflat/data/e0/b0/e0b0ef2187217a2780485c8804d1c0692ecbd843c9807b354f809370336ff732.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:57:38.123 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=Z2_oFD9DMd0 --simulate --skip-download --output /downloads/Switch Angel/Season %(upload_date>%Y)S/s%(upload_date>%Y)Se%(upload_date>%m%d)S00 - %(title)S.%(ext)S --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --print-to-file %(.{id,title,live_status,original_url,description,aspect_ratio,duration,upload_date,timestamp,playlist_index,filename})j /tmp/pinchflat/data/e0/b0/e0b0ef2187217a2780485c8804d1c0692ecbd843c9807b354f809370336ff732.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 1 with: ERROR: [youtube] Z2_oFD9DMd0: This live event will begin in a few moments. 14:57:38.124 [error] Error creating media item 'Z2_oFD9DMd0' from URL: {:error, "ERROR: [youtube] Z2_oFD9DMd0: This live event will begin in a few moments.\n", 1} 14:57:38.127 [debug] QUERY OK source="media_items" db=2.6ms idle=1340.9ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [10] 14:57:38.132 [debug] QUERY OK source="tasks" db=1.0ms idle=1050.9ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [203198, 10, ~U[2026-01-03 03:57:38Z], ~U[2026-01-03 03:57:38Z]] 14:57:38.133 [info] {"args":{"id":10},"id":203174,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":5052965,"event":"job:stop","queue_time":973155,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 14:57:43.443 [info] {"source":"oban","duration":2760,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:57:50.056 [info] GET /sources/15 14:57:50.057 [debug] Processing with PinchflatWeb.Sources.SourceController.show/2 Parameters: %{"id" => "15"} Pipelines: [:browser] 14:57:50.057 [info] GET /sources/15/edit 14:57:50.057 [debug] Processing with PinchflatWeb.Sources.SourceController.edit/2 Parameters: %{"id" => "15"} Pipelines: [:browser] 14:57:50.058 [debug] QUERY OK source="sources" db=0.8ms idle=1273.3ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [15] 14:57:50.058 [debug] QUERY OK source="sources" db=0.3ms idle=940.8ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [15] 14:57:50.061 [debug] QUERY OK source="media_profiles" db=2.6ms idle=274.8ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 14:57:50.062 [debug] QUERY OK source="media_profiles" db=3.4ms idle=274.9ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at" FROM "media_profiles" AS m0 ORDER BY m0."name" [] 14:57:50.063 [debug] QUERY OK source="settings" db=0.5ms queue=0.2ms idle=4.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:57:50.064 [debug] QUERY OK source="settings" db=0.5ms idle=5.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:57:50.065 [debug] QUERY OK source="tasks" db=2.8ms queue=0.1ms idle=278.1ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at" FROM "tasks" AS t0 INNER JOIN "oban_jobs" AS o1 ON o1."id" = t0."job_id" WHERE (t0."source_id" = ?) AND (o1."state" IN (?,?,?,?)) [15, "executing", "available", "scheduled", "retryable"] 14:57:50.065 [debug] QUERY OK source="settings" db=0.4ms idle=3.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:57:50.066 [debug] QUERY OK source="oban_jobs" db=0.6ms idle=2.9ms SELECT o0."id", o0."state", o0."queue", o0."worker", o0."args", o0."meta", o0."tags", o0."errors", o0."attempt", o0."attempted_by", o0."max_attempts", o0."priority", o0."attempted_at", o0."cancelled_at", o0."completed_at", o0."discarded_at", o0."inserted_at", o0."scheduled_at", o0."id" FROM "oban_jobs" AS o0 WHERE (o0."id" IN (?,?)) [203175, 202175] 14:57:50.066 [debug] QUERY OK source="settings" db=0.2ms idle=2.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:57:50.067 [debug] QUERY OK source="settings" db=0.2ms idle=2.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:57:50.068 [debug] QUERY OK source="settings" db=0.3ms idle=2.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:57:50.069 [info] Sent 200 in 12ms 14:57:50.072 [debug] QUERY OK source="sources" db=0.7ms idle=5.7ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [15] 14:57:50.080 [debug] QUERY OK source="media_items" db=7.5ms idle=6.5ms SELECT count(m0."id") FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [15] 14:57:50.088 [debug] QUERY OK source="media_items" db=8.2ms queue=0.1ms idle=13.8ms SELECT m0."id", m0."title", m0."uploaded_at", m0."prevent_download", m0."last_error" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) ORDER BY m0."uploaded_at" DESC LIMIT ? OFFSET ? [15, 10, 0] 14:57:50.090 [debug] QUERY OK source="sources" db=0.6ms idle=22.5ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [15] 14:57:50.091 [debug] QUERY OK source="media_items" db=0.7ms idle=22.3ms SELECT count(m0."id") FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND NOT (m0."media_filepath" IS NULL)) [15] 14:57:50.098 [debug] QUERY OK source="media_items" db=6.6ms idle=19.4ms SELECT m0."id", m0."title", m0."uploaded_at", m0."prevent_download", m0."last_error" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND NOT (m0."media_filepath" IS NULL)) ORDER BY m0."uploaded_at" DESC LIMIT ? OFFSET ? [15, 10, 0] 14:57:50.100 [debug] QUERY OK source="sources" db=0.5ms idle=19.4ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [15] 14:57:50.103 [debug] QUERY OK source="media_items" db=3.0ms idle=11.7ms SELECT count(m0."id") FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds"))))) [15] 14:57:50.112 [debug] QUERY OK source="media_items" db=8.9ms idle=13.6ms SELECT m0."id", m0."title", m0."uploaded_at", m0."prevent_download", m0."last_error" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds"))))) ORDER BY m0."uploaded_at" DESC LIMIT ? OFFSET ? [15, 10, 0] 14:57:50.115 [info] Sent 200 in 58ms 14:57:50.853 [info] GET /sources/24/edit 14:57:50.854 [debug] Processing with PinchflatWeb.Sources.SourceController.edit/2 Parameters: %{"id" => "24"} Pipelines: [:browser] 14:57:50.855 [debug] QUERY OK source="sources" db=1.1ms idle=756.1ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [24] 14:57:50.856 [debug] QUERY OK source="media_profiles" db=0.8ms idle=755.6ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at" FROM "media_profiles" AS m0 ORDER BY m0."name" [] 14:57:50.857 [debug] QUERY OK source="settings" db=0.5ms idle=753.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:57:50.858 [debug] QUERY OK source="settings" db=0.4ms idle=745.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:57:50.859 [debug] QUERY OK source="settings" db=0.6ms idle=740.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:57:50.863 [info] Sent 200 in 9ms 14:58:00.300 [info] {"source":"oban","duration":745,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 14:58:05.920 [info] GET /sources/13/media/12709 14:58:05.920 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "12709", "source_id" => "13"} Pipelines: [:browser] 14:58:05.922 [debug] QUERY OK source="media_items" db=0.9ms queue=0.1ms idle=1136.8ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [12709] 14:58:05.923 [debug] QUERY OK source="tasks" db=1.0ms idle=1138.3ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [12709] 14:58:05.924 [debug] QUERY OK source="sources" db=1.3ms idle=1138.4ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [13] 14:58:05.925 [debug] QUERY OK source="oban_jobs" db=0.6ms idle=747.6ms SELECT o0."id", o0."state", o0."queue", o0."worker", o0."args", o0."meta", o0."tags", o0."errors", o0."attempt", o0."attempted_by", o0."max_attempts", o0."priority", o0."attempted_at", o0."cancelled_at", o0."completed_at", o0."discarded_at", o0."inserted_at", o0."scheduled_at", o0."id" FROM "oban_jobs" AS o0 WHERE (o0."id" = ?) [184028] 14:58:05.926 [debug] QUERY OK source="settings" db=0.2ms idle=141.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:58:05.927 [debug] QUERY OK source="settings" db=0.2ms idle=4.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:58:05.927 [debug] QUERY OK source="settings" db=0.2ms idle=3.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:58:05.929 [debug] QUERY OK source="media_profiles" db=0.3ms idle=4.5ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 14:58:05.931 [info] Sent 200 in 10ms 14:58:09.198 [info] {"args":{"id":15},"id":203175,"meta":{},"system_time":1767412689197856261,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 14:58:09.199 [debug] QUERY OK source="sources" db=1.0ms idle=1413.8ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [15] 14:58:09.200 [debug] QUERY OK source="settings" db=0.6ms idle=1415.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:58:09.201 [debug] QUERY OK source="media_profiles" db=0.7ms idle=1013.6ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 14:58:09.201 [debug] QUERY OK source="settings" db=0.3ms idle=11.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:58:09.202 [debug] Fetching recent media IDs from YouTube API for playlist: UU5qRAYQmCLx8hFGIiTWSQvA 14:58:09.203 [debug] QUERY OK source="settings" db=0.7ms idle=4.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:58:09.203 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 14:58:09.565 [debug] QUERY OK source="media_items" db=4.9ms idle=360.5ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND m0."media_id" IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [15, "EMmIdkwn6a4", "EBT3EIoJpDc", "P2j2jM33fbk", "KuYhCywx8JM", "EteM8YNAFu8", "-KN9sfrroJA", "35D6yzUQM8I", "pIqvmN8ePkc", "rR5RqL2cjPE", "B2mmx85ZIsE", "b-jTeTJ1ekk", "Qa4dYWqfgmg", "TZZgrQEsl4c", "hMFEigXIhgA", "yf8ozrYeFEk", "QoCmQRZKU_c", "Qa9rFTiItTE", "Kxw9tq49VBM", "aLj4QgEf7gQ", "-D7c5td5vhw", "UNJUpex0blc", "Afa2PJq3okY", "r9A1srY7LdU", "m6YZoOWrLlk", "RKSlnQcuZt4", "qEjkDPJmKIo", "fZirHVq8wp0", "jdB56zAMJgE", "F92Oe7JuDtI", "luEgOCX58gw", "9CkNfdQpsuo", "eC3Mv474A8c", "mq6lsIgLLqY", "Wqmn4OTW6Fw", "4yYMQFLVRNc", "TsdMEmH2Lsw", "HQeTYLxz6iY", "V-JtebgnFoM", "2cXS3i36Kh8", "wznCZtGitN8", "2tYVGxZMOiQ", "9bxljq6ljbE", "9hHVjpo_HDA", "w8bqGx4ZtYQ", "yFYGd9irJ5k", "WTfhL2-cT1U", "LCR3ZsqWhuo", "Tj09jojsiaM", "_GZvVqjqlM0", ...] 14:58:09.575 [debug] QUERY OK source="media_items" db=8.6ms idle=366.7ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [15] 14:58:09.580 [debug] QUERY OK source="tasks" db=0.9ms idle=376.2ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [203199, 15, ~U[2026-01-03 03:58:09Z], ~U[2026-01-03 03:58:09Z]] 14:58:09.581 [info] {"args":{"id":15},"id":203175,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":382559,"event":"job:stop","queue_time":615594,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 14:58:13.212 [info] {"args":{"id":18},"id":203176,"meta":{},"system_time":1767412693212234029,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 14:58:13.213 [debug] QUERY OK source="sources" db=0.4ms idle=428.5ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [18] 14:58:13.214 [debug] QUERY OK source="settings" db=0.3ms idle=429.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:58:13.215 [debug] QUERY OK source="media_profiles" db=0.9ms queue=0.1ms idle=430.2ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 14:58:13.216 [debug] QUERY OK source="settings" db=0.4ms idle=11.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:58:13.216 [debug] Fetching recent media IDs from YouTube API for playlist: UUuisDAMnvHMYuLFRedMgmVw 14:58:13.216 [debug] QUERY OK source="settings" db=0.2ms idle=4.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:58:13.216 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 14:58:13.449 [info] {"source":"oban","duration":4646,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:58:13.636 [debug] QUERY OK source="media_items" db=4.5ms idle=417.7ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND m0."media_id" IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [18, "mf2Em7F_qDM", "PjvBtlIGGQU", "EF_PO-pALOQ", "j9eh7huEF4A", "y3FGuwfGzL0", "ZWH_eu9wdUE", "UccWWifa8jA", "0L8xWydKOhk", "CkSloYV3ay4", "SkQ7ywGW2HY", "QM3qu001Xdk", "jOTurZWIEmw", "pojDco-WhA4", "GD19Y1VYBKY", "cvViWSBLu-U", "wXm5ocXv9ho", "uB1Tk9eXQbk", "I7vb-PGArW4", "0h9qvAA5dfQ", "7yx-SecBATo", "oj1ySj7TVJk", "dtTdjRB4Q4g", "mpfcVNb8Mhs", "D3MFnCKv2Mc", "458_RTLWN2E", "W26HiyQ5k1s", "w4NDxPYJs1I", "cxuEV05UN7U", "5cPjR5FVDOw", "nJhbZNSrP4c", "X9Eu7mui35E", "wrgZHIpa6F0", "JEN7jfNqy1A", "v31DYiS2LbY", "iJfD5wWLvuM", "qPVTMbiyPLE", "rM_nvsztYlw", "IoD1j3ZG-SQ", "DDnqxbWvIgQ", "HIhF6C1yc7M", "DlNIxjiqQvs", "JO0-kOXXMEw", "2DihqSsed3w", "uDlvlF5iKz8", "v2jg_5WZ41o", "JekH9K8_SS8", "xVV_6qW_Ho8", "qYOABpvD49s", "VAw8zvyLmfE", ...] 14:58:13.646 [debug] QUERY OK source="media_items" db=6.2ms idle=424.6ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [18] 14:58:13.652 [debug] QUERY OK source="tasks" db=1.5ms idle=201.0ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [203200, 18, ~U[2026-01-03 03:58:13Z], ~U[2026-01-03 03:58:13Z]] 14:58:13.653 [info] {"args":{"id":18},"id":203176,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":440182,"event":"job:stop","queue_time":426858,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 14:58:24.236 [info] {"args":{"id":16},"id":203177,"meta":{},"system_time":1767412704236489627,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 14:58:24.237 [debug] QUERY OK source="sources" db=0.3ms idle=1452.9ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [16] 14:58:24.238 [debug] QUERY OK source="settings" db=0.8ms idle=1453.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:58:24.239 [debug] QUERY OK source="media_profiles" db=0.9ms idle=1012.6ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 14:58:24.241 [debug] QUERY OK source="settings" db=0.7ms idle=10.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:58:24.241 [debug] Fetching recent media IDs from YouTube API for playlist: UUPPfK7Nq_yQR84rn1wcTXBg 14:58:24.242 [debug] QUERY OK source="settings" db=0.5ms idle=5.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:58:24.242 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 14:58:24.631 [debug] QUERY OK source="media_items" db=6.0ms queue=0.1ms idle=387.9ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND m0."media_id" IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [16, "BiTNUZ2zONY", "7pVLE7ggkcc", "YAh-xEteBz4", "6hNpMT5OwGo", "vx3oGZYqxm4", "7W_ZSNuS-4w", "CxUC2HXvO84", "RxapAZRYJ6I", "f2ainZL8Tzk", "KJtASaKc95g", "yBCh5cyI0Po", "dg_HQL3GBcY", "ZiVvXPpo0eE", "YO1TnWptv3o", "HwnBnsQBeOA", "CCE2v3oIa74", "OWVPYr9e76Y", "VApJtIyMEec", "XtOIQYVq26o", "gZL1KzV54Cw", "kmU-Eazta1s", "XXthHXEpEP8", "dPw_HkMgYI0", "rxq-TvgNCBU", "SaCbUtTuLhA", "TWLqSk4ZlN0", "p7_rduK5WA0", "lNZ56C-f4a8", "GlK3f1cs_l4", "Yabwyb14-BQ", "WupRwvJ7sOc", "MhpoNL1gZbw", "yUfm6AbtJ0g", "y8zfgIgZ4c0", "gOwjmKMmkV4", "aTiunvocl5c", "KebjX3KEgWQ", "0T2MYXljL5o", "i7sbS92R4cg", "66CDGzjLBtY", "T_W0FWiJmM8", "u_80rUKItGc", "C9_wibbg1Ug", "A4mg1ZUb-7s", "YmUfZt4Ku9s", "DoWsgrlIjYU", "gc5ojxTuwOg", "3AMdPMoGJus", "htYY8VwN-9g", ...] 14:58:24.639 [debug] QUERY OK source="media_items" db=3.4ms idle=397.3ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [16] 14:58:24.644 [debug] QUERY OK source="tasks" db=1.0ms idle=401.6ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [203201, 16, ~U[2026-01-03 03:58:24Z], ~U[2026-01-03 03:58:24Z]] 14:58:24.646 [info] {"args":{"id":16},"id":203177,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":408515,"event":"job:stop","queue_time":472508,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 14:58:33.776 [info] GET /media_profiles/new 14:58:33.777 [debug] Processing with PinchflatWeb.MediaProfiles.MediaProfileController.new/2 Parameters: %{} Pipelines: [:browser] 14:58:33.778 [debug] QUERY OK source="settings" db=0.8ms idle=1993.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:58:33.778 [info] GET /media_profiles/1/edit 14:58:33.778 [debug] Processing with PinchflatWeb.MediaProfiles.MediaProfileController.edit/2 Parameters: %{"id" => "1"} Pipelines: [:browser] 14:58:33.779 [debug] QUERY OK source="settings" db=0.6ms idle=1994.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:58:33.780 [debug] QUERY OK source="settings" db=0.9ms idle=1524.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:58:33.781 [debug] QUERY OK source="media_profiles" db=2.2ms idle=1994.9ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 14:58:33.783 [debug] QUERY OK source="settings" db=1.5ms queue=0.1ms idle=3.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:58:33.783 [debug] QUERY OK source="settings" db=1.7ms queue=0.5ms idle=522.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:58:33.783 [debug] QUERY OK source="settings" db=0.3ms idle=4.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:58:33.785 [debug] QUERY OK source="settings" db=1.0ms idle=3.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:58:33.785 [debug] QUERY OK source="settings" db=1.1ms idle=3.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:58:33.786 [info] Sent 200 in 10ms 14:58:33.788 [info] Sent 200 in 10ms 14:58:35.120 [info] GET /media_profiles/1 14:58:35.121 [debug] Processing with PinchflatWeb.MediaProfiles.MediaProfileController.show/2 Parameters: %{"id" => "1"} Pipelines: [:browser] 14:58:35.123 [debug] QUERY OK source="media_profiles" db=0.9ms queue=0.1ms idle=1337.9ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 14:58:35.126 [debug] QUERY OK source="sources" db=2.5ms idle=1338.1ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."media_profile_id" = ?) ORDER BY s0."custom_name" [1] 14:58:35.128 [debug] QUERY OK source="settings" db=0.3ms queue=0.1ms idle=1342.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:58:35.129 [debug] QUERY OK source="settings" db=0.4ms idle=867.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:58:35.130 [debug] QUERY OK source="settings" db=0.4ms idle=346.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:58:35.136 [info] Sent 200 in 15ms 14:58:43.052 [info] GET /sources/21/media/39259 14:58:43.052 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "39259", "source_id" => "21"} Pipelines: [:browser] 14:58:43.053 [info] GET /sources/21/media/59005 14:58:43.053 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "59005", "source_id" => "21"} Pipelines: [:browser] 14:58:43.053 [debug] QUERY OK source="media_items" db=0.8ms queue=0.1ms idle=756.0ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [39259] 14:58:43.054 [debug] QUERY OK source="media_items" db=0.7ms idle=269.4ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [59005] 14:58:43.054 [debug] QUERY OK source="tasks" db=0.6ms idle=270.2ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [39259] 14:58:43.055 [debug] QUERY OK source="sources" db=0.7ms idle=270.2ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [21] 14:58:43.055 [debug] QUERY OK source="tasks" db=0.4ms idle=270.7ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [59005] 14:58:43.056 [debug] QUERY OK source="sources" db=0.9ms queue=0.1ms idle=1.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [21] 14:58:43.056 [debug] QUERY OK source="settings" db=0.6ms queue=0.1ms idle=1.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:58:43.057 [debug] QUERY OK source="settings" db=0.3ms queue=0.1ms idle=1.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:58:43.057 [debug] QUERY OK source="settings" db=0.3ms queue=0.1ms idle=2.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:58:43.058 [debug] QUERY OK source="settings" db=1.1ms queue=0.1ms idle=2.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:58:43.059 [debug] QUERY OK source="settings" db=0.4ms idle=2.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:58:43.060 [debug] QUERY OK source="settings" db=0.2ms queue=0.1ms idle=3.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:58:43.061 [debug] QUERY OK source="media_profiles" db=0.6ms idle=3.9ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 14:58:43.062 [debug] QUERY OK source="media_profiles" db=0.4ms idle=3.9ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 14:58:43.064 [info] Sent 200 in 11ms 14:58:43.065 [info] Sent 200 in 12ms 14:58:43.454 [info] {"source":"oban","duration":3867,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:58:43.969 [info] GET /sources/21/media/39508 14:58:43.969 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "39508", "source_id" => "21"} Pipelines: [:browser] 14:58:43.971 [debug] QUERY OK source="media_items" db=1.0ms idle=909.9ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [39508] 14:58:43.972 [debug] QUERY OK source="tasks" db=0.6ms idle=909.8ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [39508] 14:58:43.972 [debug] QUERY OK source="sources" db=0.9ms idle=909.6ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [21] 14:58:43.973 [debug] QUERY OK source="settings" db=0.2ms idle=672.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:58:43.974 [debug] QUERY OK source="settings" db=0.2ms idle=518.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:58:43.975 [debug] QUERY OK source="settings" db=0.6ms idle=3.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:58:43.978 [debug] QUERY OK source="media_profiles" db=1.1ms idle=4.6ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 14:58:43.983 [info] Sent 200 in 14ms 14:59:00.302 [info] {"source":"oban","duration":566,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 14:59:03.827 [info] GET /sources/17/media/58671 14:59:03.827 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "58671", "source_id" => "17"} Pipelines: [:browser] 14:59:03.828 [debug] QUERY OK source="media_items" db=0.7ms idle=465.5ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [58671] 14:59:03.830 [debug] QUERY OK source="tasks" db=0.7ms queue=0.1ms idle=45.1ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [58671] 14:59:03.830 [debug] QUERY OK source="sources" db=1.0ms idle=45.2ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [17] 14:59:03.831 [debug] QUERY OK source="oban_jobs" db=0.5ms idle=46.7ms SELECT o0."id", o0."state", o0."queue", o0."worker", o0."args", o0."meta", o0."tags", o0."errors", o0."attempt", o0."attempted_by", o0."max_attempts", o0."priority", o0."attempted_at", o0."cancelled_at", o0."completed_at", o0."discarded_at", o0."inserted_at", o0."scheduled_at", o0."id" FROM "oban_jobs" AS o0 WHERE (o0."id" = ?) [202029] 14:59:03.832 [debug] QUERY OK source="settings" db=0.4ms idle=47.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:59:03.833 [debug] QUERY OK source="settings" db=0.7ms idle=3.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:59:03.834 [debug] QUERY OK source="settings" db=0.4ms idle=3.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:59:03.835 [debug] QUERY OK source="media_profiles" db=0.5ms idle=4.5ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 14:59:03.861 [info] Sent 200 in 33ms 14:59:13.458 [info] {"source":"oban","duration":2723,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:59:24.731 [info] GET /sources/21/media/39508/edit 14:59:24.731 [info] GET /sources/21/media/59005/edit 14:59:24.732 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "59005", "source_id" => "21"} Pipelines: [:browser] 14:59:24.732 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "39508", "source_id" => "21"} Pipelines: [:browser] 14:59:24.732 [debug] QUERY OK source="media_items" db=0.5ms idle=1315.4ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [59005] 14:59:24.733 [debug] QUERY OK source="media_items" db=1.1ms idle=946.3ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [39508] 14:59:24.733 [debug] QUERY OK source="settings" db=0.5ms idle=947.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:59:24.735 [debug] QUERY OK source="settings" db=1.0ms idle=313.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:59:24.735 [debug] QUERY OK source="settings" db=1.2ms idle=947.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:59:24.736 [debug] QUERY OK source="settings" db=0.5ms idle=2.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:59:24.737 [debug] QUERY OK source="settings" db=1.0ms idle=2.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:59:24.737 [debug] QUERY OK source="settings" db=0.3ms idle=3.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:59:24.738 [info] Sent 200 in 6ms 14:59:24.738 [info] Sent 200 in 7ms 14:59:25.688 [info] GET /sources/21/media/44786 14:59:25.688 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "44786", "source_id" => "21"} Pipelines: [:browser] 14:59:25.689 [debug] QUERY OK source="media_items" db=1.0ms queue=0.1ms idle=953.2ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [44786] 14:59:25.691 [debug] QUERY OK source="tasks" db=0.5ms queue=0.1ms idle=954.1ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [44786] 14:59:25.691 [debug] QUERY OK source="sources" db=1.1ms idle=953.5ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [21] 14:59:25.693 [debug] QUERY OK source="settings" db=0.6ms idle=954.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:59:25.693 [debug] QUERY OK source="settings" db=0.5ms idle=268.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:59:25.694 [debug] QUERY OK source="settings" db=0.4ms queue=0.1ms idle=4.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:59:25.696 [debug] QUERY OK source="media_profiles" db=0.4ms idle=4.8ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 14:59:25.731 [info] Sent 200 in 43ms 14:59:26.435 [info] {"args":{"id":20},"id":203178,"meta":{},"system_time":1767412766434817068,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 14:59:26.435 [debug] QUERY OK source="sources" db=0.5ms idle=741.6ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [20] 14:59:26.436 [debug] QUERY OK source="settings" db=0.4ms idle=741.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:59:26.437 [debug] QUERY OK source="media_profiles" db=0.3ms idle=740.4ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 14:59:26.437 [debug] QUERY OK source="settings" db=0.2ms idle=10.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:59:26.437 [debug] Fetching recent media IDs from YouTube API for playlist: UU3HjB3X8jeENm46HCkI0Inw 14:59:26.438 [debug] QUERY OK source="settings" db=0.4ms idle=3.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:59:26.438 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 14:59:26.915 [debug] QUERY OK source="media_items" db=2.8ms idle=476.0ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND m0."media_id" IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [20, "CISwNCR8EXc", "EiIJqc5mV90", "8xJUjtnu72E", "Whh2rDVxvYg", "VybtaBZZqCg", "fuIOAraiRAY", "Ri4qqynMLHk", "xglNhNm95KQ", "5hEq1j_TsEY", "9f5iUsFWqoo", "0SXIhVupLZY", "3gAJpHP3yg4", "8zlnEbQgP74", "EnTFdexbFrM", "P3AU8vUwvAs", "4dQvS_n0uy4", "T5CRSwoP5_w", "cd8IcmBLpXc", "L4nAcT3QYkA", "5gskEcRE1uo", "1xywnh3DqFQ", "fXeqjU4tHqo", "YBMxdPCG_PY", "GB5_4JUB9hc", "EtAUdnvt0kc", "y-5D2HhLbso", "q8kP0pRFRMc", "8mQkTPoWfPo", "U5I92UivGzU", "UoMTKhqTf1U", "oIvzxlDViTo", "kCnh99-yZIs", "orABz0cfQZY", "VKt2PXkavyU", "kYwyB7o7BJs", "UB1FC4Nim1Y", "kN_eMzoJJmA", "4hdpejFLkPc", "ArSlY77uV1w", "2me_AlMFJh8", "OlKsICCPadE", "SjpJZ66rGaU", "iRZp_9irH2g", "CN9qeuO04A4", "BUnuun2sL-8", "XSIfSz3ZEGc", "hW5pHqeC1t4", "_cJV_l9tlaU", "ChT4bsCpwcU", ...] 14:59:26.922 [debug] QUERY OK source="media_items" db=5.2ms idle=480.5ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [20] 14:59:26.927 [debug] QUERY OK source="tasks" db=1.1ms idle=488.3ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [203202, 20, ~U[2026-01-03 03:59:26Z], ~U[2026-01-03 03:59:26Z]] 14:59:26.928 [info] {"args":{"id":20},"id":203178,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":493069,"event":"job:stop","queue_time":279992,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 14:59:29.440 [info] {"args":{"id":21},"id":203179,"meta":{},"system_time":1767412769440483186,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 14:59:29.442 [debug] QUERY OK source="sources" db=0.9ms idle=654.9ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [21] 14:59:29.442 [debug] QUERY OK source="settings" db=0.2ms idle=656.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:59:29.442 [debug] QUERY OK source="media_profiles" db=0.2ms idle=656.6ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 14:59:29.443 [debug] QUERY OK source="settings" db=0.2ms idle=9.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:59:29.443 [debug] Fetching recent media IDs from YouTube API for playlist: UU2-i3KuYoODXsM99Z3-Gm0A 14:59:29.443 [debug] QUERY OK source="settings" db=0.1ms idle=3.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:59:29.443 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 14:59:29.847 [debug] QUERY OK source="media_items" db=2.6ms idle=402.9ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND m0."media_id" IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [21, "J5rMffRWoaE", "SpNjg65s29I", "8YoFYb6ahAc", "2z0gjjea0mQ", "2d3dU0R4Sk4", "_TFHZ9W3Jt8", "dqjpFcJG5Cc", "Pm0PXgXMNVY", "YXwzRiYgHHc", "mUK6UT_7PZo", "nE49QFWymsI", "WY4rfxfFsVA", "LHyVvVpA0xM", "HYIwk4qL2os", "RZBQe4RLdZ8", "DN5ES5PlK6c", "OaO4UInG53A", "UqcJk1mPcnQ", "NqSJZesKtFs", "3bsFFOwsQzA", "EaXJ1rQ2v5k", "jnV5Ptgg1Xc", "rXghFt-g_OM", "Y_MU28GV-M0", "OZ1fXb4gcv0", "t7JeRNvBG40", "XG41sdzNz7I", "rQFtIiVV7RA", "TviKrv1FTzc", "0iH3eN6DUbM", "AjzhbnNiJO0", "3Y2fdnw7AwM", "8Z_XpRjS2oo", "RY1Nnw_qOGc", "pUB0TU9UQhI", "eVR3mgSxjUk", "5hGYObRZMPQ", "4MemHNHi_YE", "yM6u1-_JNXo", "VGLq2Tjokl4", "XpV4r2KB0UA", "cvrpvL1kO_8", "Q4kS9l81A0k", "Mq47ro7Pc00", "GAu1Y-5EPeM", "dNIc1vTlbDc", "S1zqKNfggRQ", "zquTrv6kv-U", "-H6sKLcAL9I", ...] 14:59:29.853 [debug] QUERY OK source="media_items" db=3.6ms idle=407.5ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [21] 14:59:29.856 [debug] QUERY OK source="tasks" db=0.6ms idle=412.3ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [203203, 21, ~U[2026-01-03 03:59:29Z], ~U[2026-01-03 03:59:29Z]] 14:59:29.857 [info] {"args":{"id":21},"id":203179,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":416482,"event":"job:stop","queue_time":476556,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 14:59:43.463 [info] {"source":"oban","duration":3738,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:59:54.098 [info] GET /sources/17/media/58666/edit 14:59:54.098 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "58666", "source_id" => "17"} Pipelines: [:browser] 14:59:54.101 [debug] QUERY OK source="media_items" db=1.7ms queue=0.1ms idle=1313.3ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [58666] 14:59:54.103 [debug] QUERY OK source="settings" db=0.9ms queue=0.1ms idle=599.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:59:54.104 [debug] QUERY OK source="settings" db=0.5ms idle=317.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:59:54.105 [debug] QUERY OK source="settings" db=0.6ms queue=0.1ms idle=319.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:59:54.108 [info] Sent 200 in 10ms 15:00:00.303 [info] {"source":"oban","duration":618,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 15:00:13.466 [info] {"source":"oban","duration":1963,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:00:16.934 [info] GET /sources/21/media/41262 15:00:16.934 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "41262", "source_id" => "21"} Pipelines: [:browser] 15:00:16.935 [info] GET /sources/21/media/39269 15:00:16.935 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "39269", "source_id" => "21"} Pipelines: [:browser] 15:00:16.936 [debug] QUERY OK source="media_items" db=0.9ms idle=1149.0ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [41262] 15:00:16.937 [debug] QUERY OK source="media_items" db=1.3ms queue=0.1ms idle=1149.8ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [39269] 15:00:16.937 [debug] QUERY OK source="tasks" db=1.2ms idle=1150.5ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [41262] 15:00:16.938 [debug] QUERY OK source="sources" db=1.8ms idle=360.9ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [21] 15:00:16.939 [debug] QUERY OK source="tasks" db=1.2ms queue=0.1ms idle=151.9ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [39269] 15:00:16.939 [debug] QUERY OK source="sources" db=1.4ms idle=2.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [21] 15:00:16.940 [debug] QUERY OK source="settings" db=0.6ms queue=0.3ms idle=1.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:00:16.941 [debug] QUERY OK source="settings" db=1.2ms idle=1.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:00:16.941 [debug] QUERY OK source="settings" db=1.6ms queue=0.1ms idle=2.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:00:16.942 [debug] QUERY OK source="settings" db=0.6ms idle=2.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:00:16.942 [debug] QUERY OK source="settings" db=0.8ms idle=2.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:00:16.944 [debug] QUERY OK source="media_profiles" db=0.4ms idle=3.4ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 15:00:16.944 [debug] QUERY OK source="settings" db=0.3ms idle=2.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:00:16.945 [debug] QUERY OK source="media_profiles" db=0.2ms idle=3.8ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 15:00:16.949 [info] Sent 200 in 14ms 15:00:16.964 [info] Sent 200 in 30ms 15:00:18.017 [info] GET /sources/21/media/39259/edit 15:00:18.017 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "39259", "source_id" => "21"} Pipelines: [:browser] 15:00:18.017 [debug] QUERY OK source="media_items" db=0.2ms idle=1074.6ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [39259] 15:00:18.018 [debug] QUERY OK source="settings" db=0.2ms idle=1074.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:00:18.018 [debug] QUERY OK source="settings" db=0.1ms idle=1074.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:00:18.019 [debug] QUERY OK source="settings" db=0.1ms idle=1073.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:00:18.020 [info] Sent 200 in 3ms 15:00:24.581 [info] GET /sources/21/media/39269/edit 15:00:24.582 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "39269", "source_id" => "21"} Pipelines: [:browser] 15:00:24.582 [info] GET /sources/21/media/58995 15:00:24.582 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "58995", "source_id" => "21"} Pipelines: [:browser] 15:00:24.583 [debug] QUERY OK source="media_items" db=0.9ms queue=0.1ms idle=980.9ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [39269] 15:00:24.584 [debug] QUERY OK source="media_items" db=1.1ms queue=0.1ms idle=797.2ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [58995] 15:00:24.585 [debug] QUERY OK source="settings" db=0.9ms queue=0.1ms idle=798.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:00:24.586 [debug] QUERY OK source="tasks" db=0.9ms queue=0.1ms idle=799.4ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [58995] 15:00:24.587 [debug] QUERY OK source="sources" db=1.3ms queue=0.1ms idle=799.4ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [21] 15:00:24.587 [debug] QUERY OK source="settings" db=0.8ms idle=2.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:00:24.588 [debug] QUERY OK source="oban_jobs" db=0.3ms idle=3.0ms SELECT o0."id", o0."state", o0."queue", o0."worker", o0."args", o0."meta", o0."tags", o0."errors", o0."attempt", o0."attempted_by", o0."max_attempts", o0."priority", o0."attempted_at", o0."cancelled_at", o0."completed_at", o0."discarded_at", o0."inserted_at", o0."scheduled_at", o0."id" FROM "oban_jobs" AS o0 WHERE (o0."id" = ?) [202137] 15:00:24.588 [debug] QUERY OK source="settings" db=0.5ms queue=0.1ms idle=2.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:00:24.589 [debug] QUERY OK source="settings" db=1.1ms idle=1.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:00:24.590 [debug] QUERY OK source="settings" db=0.2ms queue=0.3ms idle=2.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:00:24.591 [debug] QUERY OK source="settings" db=0.3ms idle=3.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:00:24.592 [info] Sent 200 in 10ms 15:00:24.592 [debug] QUERY OK source="media_profiles" db=0.4ms idle=4.0ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 15:00:24.609 [info] Sent 200 in 26ms 15:00:25.517 [info] GET /sources/21/media/44786/edit 15:00:25.518 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "44786", "source_id" => "21"} Pipelines: [:browser] 15:00:25.520 [debug] QUERY OK source="media_items" db=1.1ms idle=929.0ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [44786] 15:00:25.521 [debug] QUERY OK source="settings" db=0.4ms idle=930.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:00:25.522 [debug] QUERY OK source="settings" db=0.3ms idle=930.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:00:25.523 [debug] QUERY OK source="settings" db=0.4ms idle=930.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:00:25.526 [info] Sent 200 in 9ms 15:00:39.230 [info] GET /sources/13/media/33305/edit 15:00:39.230 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "33305", "source_id" => "13"} Pipelines: [:browser] 15:00:39.231 [debug] QUERY OK source="media_items" db=1.1ms idle=583.5ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [33305] 15:00:39.233 [debug] QUERY OK source="settings" db=0.5ms idle=446.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:00:39.233 [debug] QUERY OK source="settings" db=0.6ms idle=447.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:00:39.235 [debug] QUERY OK source="settings" db=0.6ms idle=448.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:00:39.237 [info] Sent 200 in 7ms 15:00:43.471 [info] {"source":"oban","duration":3915,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:01:00.306 [info] {"source":"oban","duration":986,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 15:01:13.475 [info] {"source":"oban","duration":2920,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:01:22.153 [info] GET /sources/17/media/45555/edit 15:01:22.153 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "45555", "source_id" => "17"} Pipelines: [:browser] 15:01:22.154 [debug] QUERY OK source="media_items" db=0.8ms idle=1367.9ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [45555] 15:01:22.156 [debug] QUERY OK source="settings" db=0.7ms idle=1369.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:01:22.156 [debug] QUERY OK source="settings" db=0.5ms idle=1370.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:01:22.158 [debug] QUERY OK source="settings" db=0.5ms idle=1365.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:01:22.159 [info] Sent 200 in 6ms 15:01:22.436 [info] GET /sources/21/media/59018 15:01:22.437 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "59018", "source_id" => "21"} Pipelines: [:browser] 15:01:22.437 [info] GET /sources/21/media/41262/edit 15:01:22.437 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "41262", "source_id" => "21"} Pipelines: [:browser] 15:01:22.438 [debug] QUERY OK source="media_items" db=0.6ms idle=282.9ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [41262] 15:01:22.439 [debug] QUERY OK source="media_items" db=1.6ms idle=642.1ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [59018] 15:01:22.440 [debug] QUERY OK source="settings" db=0.5ms queue=0.1ms idle=283.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:01:22.441 [debug] QUERY OK source="tasks" db=0.7ms queue=0.2ms idle=283.0ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [59018] 15:01:22.441 [debug] QUERY OK source="settings" db=0.8ms idle=1.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:01:22.441 [debug] QUERY OK source="sources" db=0.9ms queue=0.1ms idle=281.9ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [21] 15:01:22.442 [debug] QUERY OK source="settings" db=0.5ms idle=2.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:01:22.442 [debug] QUERY OK source="settings" db=0.6ms idle=1.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:01:22.443 [debug] QUERY OK source="settings" db=0.4ms idle=1.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:01:22.444 [debug] QUERY OK source="settings" db=0.2ms idle=2.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:01:22.444 [info] Sent 200 in 7ms 15:01:22.446 [debug] QUERY OK source="media_profiles" db=0.7ms idle=4.0ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 15:01:22.447 [info] Sent 200 in 10ms 15:01:23.075 [info] GET /sources/21/media/58989 15:01:23.075 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "58989", "source_id" => "21"} Pipelines: [:browser] 15:01:23.076 [debug] QUERY OK source="media_items" db=0.9ms idle=633.0ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [58989] 15:01:23.078 [debug] QUERY OK source="sources" db=0.8ms idle=633.2ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [21] 15:01:23.078 [debug] QUERY OK source="tasks" db=1.3ms idle=633.9ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [58989] 15:01:23.080 [debug] QUERY OK source="oban_jobs" db=0.9ms idle=632.8ms SELECT o0."id", o0."state", o0."queue", o0."worker", o0."args", o0."meta", o0."tags", o0."errors", o0."attempt", o0."attempted_by", o0."max_attempts", o0."priority", o0."attempted_at", o0."cancelled_at", o0."completed_at", o0."discarded_at", o0."inserted_at", o0."scheduled_at", o0."id" FROM "oban_jobs" AS o0 WHERE (o0."id" = ?) [202136] 15:01:23.081 [debug] QUERY OK source="settings" db=0.5ms idle=282.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:01:23.081 [debug] QUERY OK source="settings" db=0.3ms idle=4.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:01:23.082 [debug] QUERY OK source="settings" db=0.4ms idle=4.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:01:23.084 [debug] QUERY OK source="media_profiles" db=0.5ms idle=5.1ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 15:01:23.111 [info] Sent 200 in 36ms 15:01:43.480 [info] {"source":"oban","duration":3211,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:01:59.821 [info] GET /sources/13/media/33308/edit 15:01:59.821 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "33308", "source_id" => "13"} Pipelines: [:browser] 15:01:59.823 [debug] QUERY OK source="media_items" db=0.5ms queue=0.3ms idle=1035.9ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [33308] 15:01:59.824 [debug] QUERY OK source="settings" db=0.3ms queue=0.1ms idle=1037.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:01:59.825 [debug] QUERY OK source="settings" db=0.4ms queue=0.2ms idle=1038.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:01:59.826 [debug] QUERY OK source="settings" db=0.3ms queue=0.1ms idle=1039.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:01:59.830 [info] Sent 200 in 8ms 15:02:00.307 [info] {"source":"oban","duration":643,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 15:02:13.485 [info] {"source":"oban","duration":4337,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:02:18.699 [info] GET /sources/21/media/40805 15:02:18.699 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "40805", "source_id" => "21"} Pipelines: [:browser] 15:02:18.701 [debug] QUERY OK source="media_items" db=1.1ms queue=0.2ms idle=1736.3ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [40805] 15:02:18.702 [info] GET /sources/21/media/58995/edit 15:02:18.702 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "58995", "source_id" => "21"} Pipelines: [:browser] 15:02:18.703 [debug] QUERY OK source="tasks" db=1.0ms queue=0.1ms idle=916.4ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [40805] 15:02:18.703 [debug] QUERY OK source="sources" db=1.2ms idle=916.4ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [21] 15:02:18.704 [debug] QUERY OK source="media_items" db=1.3ms idle=916.5ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [58995] 15:02:18.704 [debug] QUERY OK source="settings" db=0.4ms idle=737.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:02:18.705 [debug] QUERY OK source="settings" db=0.4ms idle=3.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:02:18.705 [debug] QUERY OK source="settings" db=0.3ms idle=1.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:02:18.705 [debug] QUERY OK source="settings" db=0.3ms idle=1.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:02:18.706 [debug] QUERY OK source="settings" db=0.4ms idle=1.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:02:18.706 [debug] QUERY OK source="settings" db=0.6ms idle=2.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:02:18.708 [info] Sent 200 in 6ms 15:02:18.708 [debug] QUERY OK source="media_profiles" db=0.5ms idle=3.1ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 15:02:18.712 [info] Sent 200 in 13ms 15:02:19.681 [info] GET /sources/21/media/58989/edit 15:02:19.681 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "58989", "source_id" => "21"} Pipelines: [:browser] 15:02:19.683 [debug] QUERY OK source="media_items" db=0.5ms queue=0.1ms idle=976.5ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [58989] 15:02:19.684 [debug] QUERY OK source="settings" db=0.3ms idle=977.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:02:19.685 [debug] QUERY OK source="settings" db=0.3ms queue=0.1ms idle=977.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:02:19.686 [debug] QUERY OK source="settings" db=0.4ms queue=0.1ms idle=977.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:02:19.689 [info] Sent 200 in 8ms 15:02:22.991 [info] {"args":{"id":19},"id":203180,"meta":{},"system_time":1767412942991322042,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 15:02:22.992 [debug] QUERY OK source="sources" db=0.5ms idle=205.6ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [19] 15:02:22.993 [debug] QUERY OK source="settings" db=0.4ms idle=206.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:02:22.993 [debug] QUERY OK source="media_profiles" db=0.3ms idle=207.0ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 15:02:22.994 [debug] QUERY OK source="settings" db=0.2ms idle=10.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:02:22.994 [debug] Fetching recent media IDs from YouTube API for playlist: UUaYhH3F6iB3KyW3afTHk5XA 15:02:22.994 [debug] QUERY OK source="settings" db=0.4ms idle=3.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:02:22.995 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 15:02:23.556 [debug] QUERY OK source="media_items" db=4.3ms idle=559.4ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND m0."media_id" IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [19, "mUlKcxGWvrQ", "ydfuNK4wSik", "x6cNQykYdEM", "SvyVS7zvquc", "l4O2F-1BWVI", "LYXADYUSTSg", "HpL40FdPGqk", "Wre5VWHxSug", "PdUu77SAH0I", "VCflrtok9hQ", "haEa6h8Ptf0", "c_-f7G9VSPw", "7rSLcNznix4", "OLXr-B-xwY8", "X05FPJq6_Oc", "kuL-trgOvq8", "WpBEifN8BYw", "YETks_YtraY", "bwKKd4N8Q2E", "PpNfOqbt0a8", "GyifuiQ6p48", "SkoFBCBASto", "-GNid2M6IC8", "muehDmLuJSw", "nBx5yssxPDk", "Q6vzDo6it9o", "AH9Z6_PlKhA", "dZfthyLyjDk", "j9UuSMaqX9Q", "jmoVFLUvyD0", "tKm_pnNEDsc", "boVAiizeh1M", "FNtBH6k7Jmo", "MDhN5WGOJ_o", "P-UQX5L_Ff0", "kys3lRzOOEY", "VDHSC2Dl8f0", "JU0uEdyPKlE", "0sSWAzq7rjc", "HOLXNrjWeuo"] 15:02:23.559 [debug] QUERY OK source="media_items" db=2.0ms idle=564.7ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [19] 15:02:23.564 [debug] QUERY OK source="tasks" db=0.9ms idle=568.7ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [203204, 19, ~U[2026-01-03 04:02:23Z], ~U[2026-01-03 04:02:23Z]] 15:02:23.565 [info] {"args":{"id":19},"id":203180,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":573449,"event":"job:stop","queue_time":305468,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 15:02:23.995 [info] {"args":{"id":23},"id":203181,"meta":{},"system_time":1767412943994920549,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 15:02:23.996 [debug] QUERY OK source="sources" db=0.5ms queue=0.1ms idle=430.8ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [23] 15:02:23.997 [debug] QUERY OK source="settings" db=0.3ms queue=0.1ms idle=431.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:02:23.997 [debug] QUERY OK source="media_profiles" db=0.3ms queue=0.1ms idle=424.2ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 15:02:23.998 [debug] QUERY OK source="settings" db=0.3ms queue=0.1ms idle=10.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:02:23.998 [debug] Fetching recent media IDs from YouTube API for playlist: UUSHvlfXUGYGWmDBg-afA5Bg 15:02:23.999 [debug] QUERY OK source="settings" db=0.2ms queue=0.1ms idle=4.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:02:23.999 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 15:02:24.320 [debug] QUERY OK source="media_items" db=4.5ms idle=319.2ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND m0."media_id" IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [23, "QASZbKPkS08", "pr7MMAFzHe8", "DG0BSdc6kKg", "o7DJZCU8q34", "G5A2QGwRmS4", "PER4GK9LCTA", "GzIS1WZFKtc", "24P4MFV-HrM", "6x6df3uagb4", "vALU9LhFKhE", "KF1grNBv5hU", "SLSPmp8-tXE", "53liPfHBgYQ", "zykmoM0qjbA", "boyfPk5qdBM", "H2VYuo7yb2o", "75_mYLpHDr4", "PSnlGB9aKVI", "vFBFSi2XqrQ", "X2z1ugOwR2A", "ePV6FKD1J9U", "ipxj_tl_6XY", "6l9-ctzSbCo", "xu3DTyCW3Yk", "wpAt0QaSk7U", "NXy9Sg0KIMY", "ml5AG_Q0y6w", "h_Uq6-e06y8", "37_rLteuwG4", "QCbf0kOJ8lA"] 15:02:24.324 [debug] QUERY OK source="media_items" db=1.4ms idle=325.7ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [23] 15:02:24.329 [debug] QUERY OK source="tasks" db=1.0ms idle=329.1ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [203205, 23, ~U[2026-01-03 04:02:24Z], ~U[2026-01-03 04:02:24Z]] 15:02:24.330 [info] {"args":{"id":23},"id":203181,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":335111,"event":"job:stop","queue_time":540101,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 15:02:24.999 [info] {"args":{"id":25},"id":203182,"meta":{},"system_time":1767412944998871701,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 15:02:25.000 [debug] QUERY OK source="sources" db=0.3ms queue=0.1ms idle=669.6ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [25] 15:02:25.001 [debug] QUERY OK source="settings" db=0.5ms queue=0.1ms idle=669.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:02:25.002 [debug] QUERY OK source="media_profiles" db=0.4ms queue=0.1ms idle=663.1ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 15:02:25.003 [debug] QUERY OK source="settings" db=0.3ms queue=0.1ms idle=10.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:02:25.003 [debug] Fetching recent media IDs from YouTube API for playlist: UUWstkeBSSIEgw6n5qnlXXuA 15:02:25.004 [debug] QUERY OK source="settings" db=0.3ms queue=0.2ms idle=4.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:02:25.004 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 15:02:25.369 [debug] QUERY OK source="media_items" db=2.1ms idle=367.1ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND m0."media_id" IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [25, "_sYSZI--9TA", "T7P86y4vYKs", "qWpf9ysgE04", "81v7r86tRRE", "a3LYS6jzPKA", "o5UKHwwdhmA", "6CCxzLKCHYA", "VONzFNo8uW4", "jJUysp-6qBs", "3KzmAquL3e4", "5cgK_MdFz7s", "bHpsXfutTFY", "kVhFNQj86Ng", "nyd40ZDhRw4"] 15:02:25.372 [debug] QUERY OK source="media_items" db=1.1ms queue=0.1ms idle=370.2ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [25] 15:02:25.376 [debug] QUERY OK source="tasks" db=0.6ms idle=372.0ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [203206, 25, ~U[2026-01-03 04:02:25Z], ~U[2026-01-03 04:02:25Z]] 15:02:25.377 [info] {"args":{"id":25},"id":203182,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":378092,"event":"job:stop","queue_time":537348,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 15:02:26.002 [info] {"args":{"id":17},"id":203183,"meta":{},"system_time":1767412946002619916,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 15:02:26.005 [debug] QUERY OK source="sources" db=1.4ms queue=0.2ms idle=626.5ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [17] 15:02:26.006 [debug] QUERY OK source="settings" db=0.6ms queue=0.2ms idle=627.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:02:26.007 [debug] QUERY OK source="media_profiles" db=0.3ms queue=0.1ms idle=621.7ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 15:02:26.008 [debug] QUERY OK source="settings" db=0.2ms queue=0.1ms idle=12.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:02:26.008 [debug] Fetching recent media IDs from YouTube API for playlist: UUEIwxahdLz7bap-VDs9h35A 15:02:26.009 [debug] QUERY OK source="settings" db=0.2ms queue=0.1ms idle=6.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:02:26.009 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 15:02:26.342 [debug] QUERY OK source="media_items" db=2.3ms idle=334.7ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND m0."media_id" IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [17, "kuMUquaeE6g", "-NzfTE8RI4w", "2eiYALLYBFE", "J_vXK9uvRf4", "tRDxBwverlI", "ymlNErMdI2k", "hM1l19H0tX8", "qg01MgiVT9k", "a3l6FdpltbQ", "NtZaP8VMv0c", "ayicYezINas", "zoTuSOEOvPw", "U7NHNT3M-tw", "B_PCZiNlmPw", "5glksNTKkZI", "iDsb-pxE3fA", "7PJi9KSDVbQ", "CfhsW1kaa2Q", "pleHURTV6fU", "T47s4L1Wje4", "LLlghvxVoH0", "K4542wtX8B4", "rf-efIZI_Dg", "OXvdwc6NDqM", "nGEHUbTtpPY", "0FybegjTkgw", "3TgdCWBV0pg", "Qjd4CREfYbo", "pqnyUemUDF4", "6-FQSEVc_cs", "BvoDuNZ9gLA", "AjJfefo41M8", "dJSGJ1-9XWw", "Mcg9GcilBfU", "MQSwyrjTV2M", "o-dZKBwbsis", "matUCqoiSGk", "0_VdGzEk5-M", "PAOpkv0fpik", "VdwSMytC7y4", "tw5tQPm-B00", "vkD3-msLIHg", "INq7pAmaUuk", "mfTVxFapdLw", "kY2YeM5fNDw", "lkWRiks6luc", "yiCM_i8r4RM", "XzBMFsZT5gM", "dKN6XatdVkY", ...] 15:02:26.348 [debug] QUERY OK source="media_items" db=2.2ms idle=339.4ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [17] 15:02:26.351 [debug] QUERY OK source="tasks" db=0.3ms idle=341.7ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [203207, 17, ~U[2026-01-03 04:02:26Z], ~U[2026-01-03 04:02:26Z]] 15:02:26.352 [info] {"args":{"id":17},"id":203183,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":349006,"event":"job:stop","queue_time":460603,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 15:02:32.579 [info] GET /sources/16 15:02:32.579 [debug] Processing with PinchflatWeb.Sources.SourceController.show/2 Parameters: %{"id" => "16"} Pipelines: [:browser] 15:02:32.580 [debug] QUERY OK source="sources" db=0.4ms idle=793.5ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [16] 15:02:32.580 [debug] QUERY OK source="media_profiles" db=0.3ms idle=794.2ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 15:02:32.582 [debug] QUERY OK source="tasks" db=1.0ms idle=794.9ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at" FROM "tasks" AS t0 INNER JOIN "oban_jobs" AS o1 ON o1."id" = t0."job_id" WHERE (t0."source_id" = ?) AND (o1."state" IN (?,?,?,?)) [16, "executing", "available", "scheduled", "retryable"] 15:02:32.583 [debug] QUERY OK source="oban_jobs" db=0.4ms idle=796.2ms SELECT o0."id", o0."state", o0."queue", o0."worker", o0."args", o0."meta", o0."tags", o0."errors", o0."attempt", o0."attempted_by", o0."max_attempts", o0."priority", o0."attempted_at", o0."cancelled_at", o0."completed_at", o0."discarded_at", o0."inserted_at", o0."scheduled_at", o0."id" FROM "oban_jobs" AS o0 WHERE (o0."id" IN (?,?)) [203201, 202179] 15:02:32.584 [debug] QUERY OK source="settings" db=0.2ms idle=571.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:02:32.584 [debug] QUERY OK source="settings" db=0.4ms idle=4.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:02:32.586 [debug] QUERY OK source="settings" db=0.3ms idle=4.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:02:32.589 [debug] QUERY OK source="sources" db=0.3ms idle=7.1ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [16] 15:02:32.592 [debug] QUERY OK source="media_items" db=1.6ms idle=7.2ms SELECT count(m0."id") FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [16] 15:02:32.594 [debug] QUERY OK source="media_items" db=1.7ms idle=8.4ms SELECT m0."id", m0."title", m0."uploaded_at", m0."prevent_download", m0."last_error" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) ORDER BY m0."uploaded_at" DESC LIMIT ? OFFSET ? [16, 10, 0] 15:02:32.595 [debug] QUERY OK source="sources" db=0.2ms idle=10.3ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [16] 15:02:32.596 [debug] QUERY OK source="media_items" db=0.3ms idle=9.6ms SELECT count(m0."id") FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND NOT (m0."media_filepath" IS NULL)) [16] 15:02:32.597 [debug] QUERY OK source="media_items" db=1.4ms idle=6.6ms SELECT m0."id", m0."title", m0."uploaded_at", m0."prevent_download", m0."last_error" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND NOT (m0."media_filepath" IS NULL)) ORDER BY m0."uploaded_at" DESC LIMIT ? OFFSET ? [16, 10, 0] 15:02:32.600 [debug] QUERY OK source="sources" db=0.2ms idle=7.7ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [16] 15:02:32.601 [debug] QUERY OK source="media_items" db=0.7ms idle=6.2ms SELECT count(m0."id") FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds"))))) [16] 15:02:32.603 [debug] QUERY OK source="media_items" db=2.3ms idle=6.1ms SELECT m0."id", m0."title", m0."uploaded_at", m0."prevent_download", m0."last_error" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds"))))) ORDER BY m0."uploaded_at" DESC LIMIT ? OFFSET ? [16, 10, 0] 15:02:32.606 [info] Sent 200 in 27ms 15:02:43.490 [info] {"source":"oban","duration":4470,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:02:44.242 [info] GET /sources/21/media/58979/edit 15:02:44.242 [info] GET /sources/21/force_download_pending 15:02:44.243 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "58979", "source_id" => "21"} Pipelines: [:browser] 15:02:44.244 [debug] QUERY OK source="settings" db=0.9ms queue=0.1ms idle=457.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:02:44.244 [debug] QUERY OK source="media_items" db=1.0ms idle=753.1ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [58979] 15:02:44.245 [debug] QUERY OK source="settings" db=0.5ms idle=458.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:02:44.245 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 15:02:44.246 [debug] QUERY OK source="settings" db=0.4ms idle=459.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:02:44.246 [debug] QUERY OK source="settings" db=0.2ms queue=0.1ms idle=204.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:02:44.249 [debug] QUERY OK source="settings" db=1.0ms queue=0.2ms idle=3.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:02:44.251 [info] Sent 200 in 8ms 15:02:44.246 [error] #PID<0.11764.0> running PinchflatWeb.Endpoint (connection #PID<0.11762.0>, stream id 1) terminated Server: pinchflat.suranyami.com:80 (http) Request: GET /sources/21/force_download_pending ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/21/force_download_pending (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.11762.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/21/force_download_pending", host: "pinchflat.suranyami.com", peer: {{10, 210, 0, 2}, 44316}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, zstd, deflate", "host" => "pinchflat.suranyami.com", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)", "via" => "2.0 Caddy", "x-forwarded-for" => "216.73.216.55", "x-forwarded-host" => "pinchflat.suranyami.com", "x-forwarded-proto" => "https" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.suranyami.com", method: "GET", owner: #PID<0.11764.0>, params: %{}, path_info: ["sources", "21", "force_download_pending"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.suranyami.com", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {10, 210, 0, 2}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"accept-encoding", "gzip, br, zstd, deflate"}, {"host", "pinchflat.suranyami.com"}, {"user-agent", "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)"}, {"via", "2.0 Caddy"}, {"x-forwarded-for", "216.73.216.55"}, {"x-forwarded-host", "pinchflat.suranyami.com"}, {"x-forwarded-proto", "https"} ], request_path: "/sources/21/force_download_pending", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GIccuhEbug6-yCAAAkcB"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.11762.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/21/force_download_pending", host: "pinchflat.suranyami.com", peer: {{10, 210, 0, 2}, 44316}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, zstd, deflate", "host" => "pinchflat.suranyami.com", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)", "via" => "2.0 Caddy", "x-forwarded-for" => "216.73.216.55", "x-forwarded-host" => "pinchflat.suranyami.com", "x-forwarded-proto" => "https" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/21/force_download_pending (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.11762.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/21/force_download_pending", host: "pinchflat.suranyami.com", peer: {{10, 210, 0, 2}, 44316}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, zstd, deflate", "host" => "pinchflat.suranyami.com", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)", "via" => "2.0 Caddy", "x-forwarded-for" => "216.73.216.55", "x-forwarded-host" => "pinchflat.suranyami.com", "x-forwarded-proto" => "https" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.suranyami.com", method: "GET", owner: #PID<0.11764.0>, params: %{}, path_info: ["sources", "21", "force_download_pending"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.suranyami.com", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {10, 210, 0, 2}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"accept-encoding", "gzip, br, zstd, deflate"}, {"host", "pinchflat.suranyami.com"}, {"user-agent", "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)"}, {"via", "2.0 Caddy"}, {"x-forwarded-for", "216.73.216.55"}, {"x-forwarded-host", "pinchflat.suranyami.com"}, {"x-forwarded-proto", "https"} ], (truncated) 15:02:44.582 [info] GET /sources/21/media/59033 15:02:44.583 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "59033", "source_id" => "21"} Pipelines: [:browser] 15:02:44.584 [debug] QUERY OK source="media_items" db=0.7ms queue=0.1ms idle=339.1ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [59033] 15:02:44.588 [debug] QUERY OK source="tasks" db=2.7ms idle=339.3ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [59033] 15:02:44.588 [debug] QUERY OK source="sources" db=2.9ms idle=339.7ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [21] 15:02:44.589 [debug] QUERY OK source="settings" db=0.3ms idle=342.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:02:44.590 [debug] QUERY OK source="settings" db=0.4ms idle=340.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:02:44.591 [debug] QUERY OK source="settings" db=0.2ms idle=6.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:02:44.593 [debug] QUERY OK source="media_profiles" db=0.2ms idle=4.8ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 15:02:44.597 [info] Sent 200 in 14ms 15:03:00.309 [info] {"source":"oban","duration":845,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 15:03:02.193 [info] GET /sources/20 15:03:02.193 [debug] Processing with PinchflatWeb.Sources.SourceController.show/2 Parameters: %{"id" => "20"} Pipelines: [:browser] 15:03:02.194 [debug] QUERY OK source="sources" db=0.9ms idle=407.8ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [20] 15:03:02.196 [debug] QUERY OK source="media_profiles" db=0.7ms idle=409.2ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 15:03:02.198 [debug] QUERY OK source="tasks" db=1.8ms idle=410.4ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at" FROM "tasks" AS t0 INNER JOIN "oban_jobs" AS o1 ON o1."id" = t0."job_id" WHERE (t0."source_id" = ?) AND (o1."state" IN (?,?,?,?)) [20, "executing", "available", "scheduled", "retryable"] 15:03:02.199 [debug] QUERY OK source="oban_jobs" db=0.6ms idle=412.6ms SELECT o0."id", o0."state", o0."queue", o0."worker", o0."args", o0."meta", o0."tags", o0."errors", o0."attempt", o0."attempted_by", o0."max_attempts", o0."priority", o0."attempted_at", o0."cancelled_at", o0."completed_at", o0."discarded_at", o0."inserted_at", o0."scheduled_at", o0."id" FROM "oban_jobs" AS o0 WHERE (o0."id" IN (?,?)) [203202, 202182] 15:03:02.200 [debug] QUERY OK source="settings" db=0.3ms idle=102.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:03:02.200 [debug] QUERY OK source="settings" db=0.2ms queue=0.1ms idle=5.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:03:02.202 [debug] QUERY OK source="settings" db=0.1ms queue=0.1ms idle=5.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:03:02.206 [debug] QUERY OK source="sources" db=0.2ms idle=7.3ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [20] 15:03:02.210 [debug] QUERY OK source="media_items" db=3.8ms idle=7.4ms SELECT count(m0."id") FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [20] 15:03:02.215 [debug] QUERY OK source="media_items" db=3.9ms queue=0.1ms idle=10.9ms SELECT m0."id", m0."title", m0."uploaded_at", m0."prevent_download", m0."last_error" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) ORDER BY m0."uploaded_at" DESC LIMIT ? OFFSET ? [20, 10, 0] 15:03:02.216 [debug] QUERY OK source="sources" db=0.4ms queue=0.1ms idle=15.3ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [20] 15:03:02.217 [debug] QUERY OK source="media_items" db=0.4ms queue=0.1ms idle=15.1ms SELECT count(m0."id") FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND NOT (m0."media_filepath" IS NULL)) [20] 15:03:02.220 [debug] QUERY OK source="media_items" db=2.4ms idle=12.0ms SELECT m0."id", m0."title", m0."uploaded_at", m0."prevent_download", m0."last_error" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND NOT (m0."media_filepath" IS NULL)) ORDER BY m0."uploaded_at" DESC LIMIT ? OFFSET ? [20, 10, 0] 15:03:02.223 [debug] QUERY OK source="sources" db=0.2ms queue=0.1ms idle=12.8ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [20] 15:03:02.225 [debug] QUERY OK source="media_items" db=0.9ms idle=9.2ms SELECT count(m0."id") FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds"))))) [20] 15:03:02.229 [debug] QUERY OK source="media_items" db=3.5ms idle=9.0ms SELECT m0."id", m0."title", m0."uploaded_at", m0."prevent_download", m0."last_error" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds"))))) ORDER BY m0."uploaded_at" DESC LIMIT ? OFFSET ? [20, 10, 0] 15:03:02.234 [info] Sent 200 in 41ms 15:03:13.495 [info] {"source":"oban","duration":3327,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:03:17.531 [info] GET /sources/21/media/58984 15:03:17.531 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "58984", "source_id" => "21"} Pipelines: [:browser] 15:03:17.532 [info] GET /sources/21/media/59074/edit 15:03:17.532 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "59074", "source_id" => "21"} Pipelines: [:browser] 15:03:17.533 [debug] QUERY OK source="media_items" db=1.0ms idle=1746.2ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [58984] 15:03:17.533 [debug] QUERY OK source="media_items" db=1.0ms queue=0.1ms idle=1746.7ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [59074] 15:03:17.535 [debug] QUERY OK source="tasks" db=1.2ms queue=0.1ms idle=747.8ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [58984] 15:03:17.536 [debug] QUERY OK source="settings" db=1.6ms idle=396.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:03:17.536 [debug] QUERY OK source="sources" db=2.2ms queue=0.1ms idle=1398.4ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [21] 15:03:17.536 [debug] QUERY OK source="settings" db=0.3ms idle=3.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:03:17.537 [debug] QUERY OK source="oban_jobs" db=0.5ms idle=3.0ms SELECT o0."id", o0."state", o0."queue", o0."worker", o0."args", o0."meta", o0."tags", o0."errors", o0."attempt", o0."attempted_by", o0."max_attempts", o0."priority", o0."attempted_at", o0."cancelled_at", o0."completed_at", o0."discarded_at", o0."inserted_at", o0."scheduled_at", o0."id" FROM "oban_jobs" AS o0 WHERE (o0."id" = ?) [202135] 15:03:17.537 [debug] QUERY OK source="settings" db=0.4ms queue=0.1ms idle=2.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:03:17.538 [debug] QUERY OK source="settings" db=0.4ms queue=0.1ms idle=1.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:03:17.539 [info] Sent 200 in 7ms 15:03:17.539 [debug] QUERY OK source="settings" db=0.8ms queue=0.1ms idle=2.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:03:17.541 [debug] QUERY OK source="settings" db=0.6ms idle=3.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:03:17.544 [debug] QUERY OK source="media_profiles" db=1.5ms idle=4.8ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 15:03:17.576 [info] Sent 200 in 44ms 15:03:18.385 [info] GET /sources/21/media/58979 15:03:18.386 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "58979", "source_id" => "21"} Pipelines: [:browser] 15:03:18.387 [debug] QUERY OK source="media_items" db=0.4ms idle=848.1ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [58979] 15:03:18.388 [debug] QUERY OK source="tasks" db=0.6ms idle=848.1ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [58979] 15:03:18.388 [debug] QUERY OK source="sources" db=0.6ms idle=846.8ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [21] 15:03:18.389 [debug] QUERY OK source="oban_jobs" db=0.4ms idle=845.0ms SELECT o0."id", o0."state", o0."queue", o0."worker", o0."args", o0."meta", o0."tags", o0."errors", o0."attempt", o0."attempted_by", o0."max_attempts", o0."priority", o0."attempted_at", o0."cancelled_at", o0."completed_at", o0."discarded_at", o0."inserted_at", o0."scheduled_at", o0."id" FROM "oban_jobs" AS o0 WHERE (o0."id" = ?) [202134] 15:03:18.390 [debug] QUERY OK source="settings" db=0.3ms idle=248.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:03:18.390 [debug] QUERY OK source="settings" db=0.3ms idle=3.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:03:18.391 [debug] QUERY OK source="settings" db=0.3ms idle=3.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:03:18.393 [debug] QUERY OK source="media_profiles" db=0.4ms idle=4.2ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 15:03:18.399 [info] Sent 200 in 13ms 15:03:29.115 [info] GET /sources/24 15:03:29.116 [debug] Processing with PinchflatWeb.Sources.SourceController.show/2 Parameters: %{"id" => "24"} Pipelines: [:browser] 15:03:29.118 [debug] QUERY OK source="sources" db=1.0ms queue=0.1ms idle=1330.7ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [24] 15:03:29.119 [debug] QUERY OK source="media_profiles" db=0.5ms queue=0.1ms idle=1332.6ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 15:03:29.120 [debug] QUERY OK source="tasks" db=0.7ms idle=1333.5ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at" FROM "tasks" AS t0 INNER JOIN "oban_jobs" AS o1 ON o1."id" = t0."job_id" WHERE (t0."source_id" = ?) AND (o1."state" IN (?,?,?,?)) [24, "executing", "available", "scheduled", "retryable"] 15:03:29.121 [debug] QUERY OK source="oban_jobs" db=0.7ms idle=1334.7ms SELECT o0."id", o0."state", o0."queue", o0."worker", o0."args", o0."meta", o0."tags", o0."errors", o0."attempt", o0."attempted_by", o0."max_attempts", o0."priority", o0."attempted_at", o0."cancelled_at", o0."completed_at", o0."discarded_at", o0."inserted_at", o0."scheduled_at", o0."id" FROM "oban_jobs" AS o0 WHERE (o0."id" IN (?,?)) [203189, 202152] 15:03:29.122 [debug] QUERY OK source="settings" db=0.3ms idle=941.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:03:29.123 [debug] QUERY OK source="settings" db=0.2ms idle=4.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:03:29.124 [debug] QUERY OK source="settings" db=0.3ms idle=4.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:03:29.126 [debug] QUERY OK source="sources" db=0.8ms idle=4.8ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [24] 15:03:29.128 [debug] QUERY OK source="media_items" db=1.4ms idle=4.9ms SELECT count(m0."id") FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [24] 15:03:29.130 [debug] QUERY OK source="media_items" db=2.1ms idle=5.9ms SELECT m0."id", m0."title", m0."uploaded_at", m0."prevent_download", m0."last_error" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) ORDER BY m0."uploaded_at" DESC LIMIT ? OFFSET ? [24, 10, 0] 15:03:29.131 [debug] QUERY OK source="sources" db=0.6ms idle=8.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [24] 15:03:29.132 [debug] QUERY OK source="media_items" db=0.3ms idle=7.8ms SELECT count(m0."id") FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND NOT (m0."media_filepath" IS NULL)) [24] 15:03:29.133 [debug] QUERY OK source="media_items" db=1.3ms idle=6.0ms SELECT m0."id", m0."title", m0."uploaded_at", m0."prevent_download", m0."last_error" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND NOT (m0."media_filepath" IS NULL)) ORDER BY m0."uploaded_at" DESC LIMIT ? OFFSET ? [24, 10, 0] 15:03:29.135 [debug] QUERY OK source="sources" db=0.5ms idle=6.5ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [24] 15:03:29.136 [debug] QUERY OK source="media_items" db=0.7ms idle=4.9ms SELECT count(m0."id") FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds"))))) [24] 15:03:29.138 [debug] QUERY OK source="media_items" db=1.9ms idle=4.8ms SELECT m0."id", m0."title", m0."uploaded_at", m0."prevent_download", m0."last_error" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds"))))) ORDER BY m0."uploaded_at" DESC LIMIT ? OFFSET ? [24, 10, 0] 15:03:29.140 [info] Sent 200 in 24ms 15:03:43.498 [info] {"source":"oban","duration":2875,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:03:53.270 [info] {"args":{"id":7},"id":203188,"meta":{},"system_time":1767413033270573979,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 15:03:53.273 [debug] QUERY OK source="sources" db=1.5ms idle=485.1ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [7] 15:03:53.274 [debug] QUERY OK source="settings" db=0.6ms idle=487.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:03:53.275 [debug] QUERY OK source="media_profiles" db=1.1ms queue=0.1ms idle=488.1ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 15:03:53.276 [debug] QUERY OK source="settings" db=0.8ms queue=0.1ms idle=13.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:03:53.277 [debug] Fetching recent media IDs from YouTube API for playlist: UUwnKziETDbHJtx78nIkfYug 15:03:53.277 [debug] QUERY OK source="settings" db=0.3ms queue=0.1ms idle=6.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:03:53.278 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 15:03:53.655 [debug] QUERY OK source="media_items" db=3.7ms queue=0.1ms idle=378.4ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND m0."media_id" IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [7, "mC5NdpSMDks", "ccV3u3D9ONE", "cVCDjEfPzII", "n0X2rqzKTgM", "dcuCvRNqmpY", "GG1qX8jHKGo", "k9wkleHFvo0", "CWoYVlMuUNQ", "xlfeieH4z38", "eZM2Ik-FHEU", "CtcTG8-qzbA", "6Mmj7mf1qlg", "InwVO9qBjqs", "1Hp-W2bpPrw", "VtE5sTpkn7k", "8dOJypt2F70", "Evm4t4prtWo", "taLzgvbrnv0", "rgCrnyf5JEI", "PHhc-48JT3U", "vFKjpNNjNGw", "VJQlOI70ubw", "E5cfNq0DO90", "DNBGSsZatbY", "pna1NyaHTls", "CUHao-vA98g", "cPN9BJe_RQw", "rCBt4XgCX-0", "f4g6KKGMmEI", "P_I5Jsc3xRw", "fPaU2l7RktM", "0PVwt01b6fs", "0qMDM4Y4Hwo", "Ld285PDsHvs", "p1mQC71wplA", "9k5JhKK6WlA", "WPxrifmtlQI", "nVNBmK7a1y8", "QDnMYztaxfI", "gxsaWhXG1Gg", "RMtkKiyrXic", "JKlJ6OW67Bk", "Sjmb8O-fRWI", "qZhD4G7ENSY", "OTWDzMjgsEY", "Y_eCu_pW6-4", "DplgNsjOPRg", "l6hHI3AVoYM", "joAhvj7dfsc", ...] 15:03:53.664 [debug] QUERY OK source="media_items" db=4.0ms idle=386.0ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [7] 15:03:53.669 [debug] QUERY OK source="tasks" db=0.4ms idle=391.1ms INSERT INTO "tasks" ("job_id","media_item_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [203208, 8350, ~U[2026-01-03 04:03:53Z], ~U[2026-01-03 04:03:53Z]] 15:03:53.673 [debug] QUERY OK source="tasks" db=0.6ms idle=5.8ms INSERT INTO "tasks" ("job_id","media_item_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [203209, 8380, ~U[2026-01-03 04:03:53Z], ~U[2026-01-03 04:03:53Z]] 15:03:53.676 [info] {"args":{"id":8350},"id":203208,"meta":{},"system_time":1767413033676455514,"max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 15:03:53.676 [info] {"args":{"id":8380},"id":203209,"meta":{},"system_time":1767413033676615650,"max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 15:03:53.678 [debug] QUERY OK source="media_items" db=0.8ms queue=0.1ms idle=4.1ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [8380] 15:03:53.678 [debug] QUERY OK source="media_items" db=1.1ms queue=0.1ms idle=4.8ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [8350] 15:03:53.678 [info] User scripts lifecyle file either not present or is empty. Skipping. 15:03:53.678 [info] User scripts lifecyle file either not present or is empty. Skipping. 15:03:53.679 [debug] QUERY OK source="sources" db=0.6ms queue=0.1ms idle=4.9ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [7] 15:03:53.680 [debug] QUERY OK source="sources" db=0.9ms idle=2.9ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [7] 15:03:53.681 [debug] QUERY OK source="media_profiles" db=1.5ms idle=1.8ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 15:03:53.681 [debug] QUERY OK source="media_profiles" db=1.2ms queue=0.1ms idle=2.1ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 15:03:53.683 [debug] QUERY OK source="media_items" db=1.3ms idle=1.9ms SELECT 1 FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) LIMIT 1 [8380] 15:03:53.684 [debug] QUERY OK source="media_items" db=0.9ms idle=1.5ms SELECT 1 FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) LIMIT 1 [8350] 15:03:53.685 [debug] QUERY OK source="tasks" db=0.8ms idle=2.8ms INSERT INTO "tasks" ("job_id","media_item_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [203210, 8401, ~U[2026-01-03 04:03:53Z], ~U[2026-01-03 04:03:53Z]] 15:03:53.686 [debug] QUERY OK source="media_metadata" db=0.2ms idle=2.3ms SELECT m0."id", m0."metadata_filepath", m0."thumbnail_filepath", m0."media_item_id", m0."inserted_at", m0."updated_at", m0."media_item_id" FROM "media_metadata" AS m0 WHERE (m0."media_item_id" = ?) [8350] 15:03:53.686 [debug] QUERY OK source="media_metadata" db=0.9ms idle=3.6ms SELECT m0."id", m0."metadata_filepath", m0."thumbnail_filepath", m0."media_item_id", m0."inserted_at", m0."updated_at", m0."media_item_id" FROM "media_metadata" AS m0 WHERE (m0."media_item_id" = ?) [8380] 15:03:53.687 [debug] QUERY OK source="media_profiles" db=0.9ms idle=1.0ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 15:03:53.688 [debug] QUERY OK source="media_profiles" db=2.2ms queue=0.1ms idle=2.5ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 15:03:53.689 [debug] QUERY OK source="settings" db=1.2ms queue=0.1ms idle=2.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:03:53.690 [debug] QUERY OK source="settings" db=0.2ms queue=0.2ms idle=3.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:03:53.690 [debug] QUERY OK source="settings" db=0.3ms idle=1.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:03:53.690 [debug] QUERY OK source="settings" db=0.2ms idle=0.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:03:53.691 [debug] Running yt-dlp command for action: get_downloadable_status 15:03:53.691 [debug] Running yt-dlp command for action: get_downloadable_status 15:03:53.692 [debug] QUERY OK source="tasks" db=0.5ms idle=1.5ms INSERT INTO "tasks" ("job_id","media_item_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [203211, 8418, ~U[2026-01-03 04:03:53Z], ~U[2026-01-03 04:03:53Z]] 15:03:53.693 [debug] QUERY OK source="settings" db=0.4ms idle=2.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:03:53.693 [debug] QUERY OK source="settings" db=0.3ms idle=2.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:03:53.694 [debug] QUERY OK source="settings" db=0.8ms idle=2.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:03:53.694 [debug] QUERY OK source="settings" db=0.3ms idle=2.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:03:53.694 [debug] QUERY OK source="settings" db=0.3ms idle=0.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:03:53.694 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=bhkmFO8DikY --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/a7/87/a78731af05bba9ae465fb78bf9ea73081113b4f7b0cb56af422e1a63cacf8f63.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 15:03:53.695 [debug] QUERY OK source="settings" db=0.2ms idle=0.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:03:53.695 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=aCES82xfgdw --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/f9/39/f939a70b1e3ef9022de6621a48e60a0f31757a04d70f204de106eb5033ba5281.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 15:03:53.695 [debug] QUERY OK source="tasks" db=0.5ms idle=1.0ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [203212, 7, ~U[2026-01-03 04:03:53Z], ~U[2026-01-03 04:03:53Z]] 15:03:53.696 [info] {"args":{"id":7},"id":203188,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":425304,"event":"job:stop","queue_time":456684,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 15:03:54.447 [info] GET /sources/25 15:03:54.448 [debug] Processing with PinchflatWeb.Sources.SourceController.show/2 Parameters: %{"id" => "25"} Pipelines: [:browser] 15:03:54.450 [debug] QUERY OK source="sources" db=0.9ms queue=0.1ms idle=753.7ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [25] 15:03:54.452 [debug] QUERY OK source="media_profiles" db=1.1ms idle=755.1ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 15:03:54.455 [debug] QUERY OK source="tasks" db=2.0ms queue=0.1ms idle=756.4ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at" FROM "tasks" AS t0 INNER JOIN "oban_jobs" AS o1 ON o1."id" = t0."job_id" WHERE (t0."source_id" = ?) AND (o1."state" IN (?,?,?,?)) [25, "executing", "available", "scheduled", "retryable"] 15:03:54.456 [debug] QUERY OK source="oban_jobs" db=0.8ms idle=751.6ms SELECT o0."id", o0."state", o0."queue", o0."worker", o0."args", o0."meta", o0."tags", o0."errors", o0."attempt", o0."attempted_by", o0."max_attempts", o0."priority", o0."attempted_at", o0."cancelled_at", o0."completed_at", o0."discarded_at", o0."inserted_at", o0."scheduled_at", o0."id" FROM "oban_jobs" AS o0 WHERE (o0."id" IN (?,?)) [203206, 202190] 15:03:54.457 [debug] QUERY OK source="settings" db=0.4ms idle=190.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:03:54.457 [debug] QUERY OK source="settings" db=0.5ms idle=7.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:03:54.459 [debug] QUERY OK source="settings" db=0.4ms queue=0.1ms idle=6.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:03:54.463 [debug] QUERY OK source="sources" db=0.6ms idle=7.9ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [25] 15:03:54.465 [debug] QUERY OK source="media_items" db=1.1ms idle=8.1ms SELECT count(m0."id") FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [25] 15:03:54.468 [debug] QUERY OK source="media_items" db=1.9ms queue=0.2ms idle=9.3ms SELECT m0."id", m0."title", m0."uploaded_at", m0."prevent_download", m0."last_error" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) ORDER BY m0."uploaded_at" DESC LIMIT ? OFFSET ? [25, 10, 0] 15:03:54.470 [debug] QUERY OK source="sources" db=0.6ms queue=0.1ms idle=12.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [25] 15:03:54.471 [debug] QUERY OK source="media_items" db=0.4ms idle=11.7ms SELECT count(m0."id") FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND NOT (m0."media_filepath" IS NULL)) [25] 15:03:54.473 [debug] QUERY OK source="media_items" db=0.6ms idle=8.4ms SELECT m0."id", m0."title", m0."uploaded_at", m0."prevent_download", m0."last_error" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND NOT (m0."media_filepath" IS NULL)) ORDER BY m0."uploaded_at" DESC LIMIT ? OFFSET ? [25, 10, 0] 15:03:54.474 [debug] QUERY OK source="sources" db=0.2ms idle=8.2ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [25] 15:03:54.475 [debug] QUERY OK source="media_items" db=0.3ms idle=6.0ms SELECT count(m0."id") FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds"))))) [25] 15:03:54.476 [debug] QUERY OK source="media_items" db=0.6ms idle=5.0ms SELECT m0."id", m0."title", m0."uploaded_at", m0."prevent_download", m0."last_error" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds"))))) ORDER BY m0."uploaded_at" DESC LIMIT ? OFFSET ? [25, 10, 0] 15:03:54.478 [info] Sent 200 in 30ms 15:03:59.283 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=bhkmFO8DikY --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/a7/87/a78731af05bba9ae465fb78bf9ea73081113b4f7b0cb56af422e1a63cacf8f63.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 1 with: ERROR: [youtube] bhkmFO8DikY: Sign in to confirm your age. This video may be inappropriate for some users. Use --cookies-from-browser or --cookies for the authentication. See https://github.com/yt-dlp/yt-dlp/wiki/FAQ#how-do-i-pass-cookies-to-yt-dlp for how to manually pass cookies. Also see https://github.com/yt-dlp/yt-dlp/wiki/Extractors#exporting-youtube-cookies for tips on effectively exporting YouTube cookies 15:03:59.285 [debug] QUERY OK source="settings" db=0.7ms queue=0.1ms idle=1499.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:03:59.286 [debug] QUERY OK source="settings" db=0.4ms idle=1500.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:03:59.287 [debug] Running yt-dlp command for action: get_downloadable_status 15:03:59.289 [debug] QUERY OK source="settings" db=0.4ms idle=1502.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:03:59.289 [debug] QUERY OK source="settings" db=0.4ms idle=1008.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:03:59.290 [debug] QUERY OK source="settings" db=0.4ms idle=5.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:03:59.290 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=bhkmFO8DikY --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/9a/3c/9a3c6c27778b2249a182d22fea15086338f1d10a53f8af94caf74d7e62172442.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 15:03:59.341 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=aCES82xfgdw --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/f9/39/f939a70b1e3ef9022de6621a48e60a0f31757a04d70f204de106eb5033ba5281.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 1 with: ERROR: [youtube] aCES82xfgdw: Sign in to confirm your age. This video may be inappropriate for some users. Use --cookies-from-browser or --cookies for the authentication. See https://github.com/yt-dlp/yt-dlp/wiki/FAQ#how-do-i-pass-cookies-to-yt-dlp for how to manually pass cookies. Also see https://github.com/yt-dlp/yt-dlp/wiki/Extractors#exporting-youtube-cookies for tips on effectively exporting YouTube cookies 15:03:59.343 [debug] QUERY OK source="settings" db=0.7ms queue=0.1ms idle=56.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:03:59.344 [debug] QUERY OK source="settings" db=0.4ms queue=0.3ms idle=57.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:03:59.345 [debug] Running yt-dlp command for action: get_downloadable_status 15:03:59.347 [debug] QUERY OK source="settings" db=0.2ms idle=57.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:03:59.348 [debug] QUERY OK source="settings" db=0.3ms queue=0.1ms idle=57.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:03:59.348 [debug] QUERY OK source="settings" db=0.3ms queue=0.1ms idle=57.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:03:59.349 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=aCES82xfgdw --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/10/4c/104c88aab5517dcad673229a1a9bddb872a2f08bf605a230398eba8b8e4d1619.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 15:04:00.311 [info] {"source":"oban","duration":772,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 15:04:01.303 [info] {"args":{"id":24},"id":203189,"meta":{},"system_time":1767413041302792247,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 15:04:01.304 [debug] QUERY OK source="sources" db=0.6ms idle=517.2ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [24] 15:04:01.305 [debug] QUERY OK source="settings" db=0.5ms idle=518.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:04:01.305 [debug] QUERY OK source="media_profiles" db=0.3ms idle=519.1ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 15:04:01.306 [debug] QUERY OK source="settings" db=0.2ms idle=11.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:04:01.306 [debug] Fetching recent media IDs from YouTube API for playlist: UUNTjSZfAK117b2kFGNCJfdA 15:04:01.307 [debug] QUERY OK source="settings" db=0.2ms idle=4.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:04:01.307 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 15:04:01.732 [debug] QUERY OK source="media_items" db=4.8ms idle=423.1ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND m0."media_id" IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [24, "2J48c2sukbo", "zq9gpqgWFv8", "EWdphas_OP4", "-U2sQ3e3R-0", "XdytKwHuG_8", "t-hori2Io14", "Xbemvi42Ngs", "91m4MQw_sZI", "GfUIbPqAMQs", "4VpVt3zdvL8", "q6Kd5C7O-F8", "EV6DSqTOXM0", "mMvfBUNNKIY", "C215grXAMCk", "_x6TE7hbE1k", "vycMxLco0a0", "lJWhisaNv8E", "4Blxc8mVzQs", "ztqcWc5aaks", "0Dvn039qD8I", "Vx69evZOEAE", "4dzZ44-xVds", "Rews5WNxiNk", "f-BFFWzh9uE", "RfJSMWHO0tY", "gMeUOURvDP8", "LEiL1np9sSM", "F-QeDtQ8Gy4", "9FSIF281OAo", "Shav52BfzWk", "dsCfQ3y5tHQ", "0rpt5sMb7cw", "Fe7Y152ak3Y", "HEuablkqrCg", "BRUTYHBJ_Z4", "gpaV4bgEG-g", "ppjFdEbIS4g", "lEhEMRA17bg", "tpIXmmV4ib4", "LBYQ_NLVKCw", "JsdM3k3QiPc", "TNmSVjGyZx0", "OMVYZziNjhc", "uyfyFRvng3c", "YFBg5NNEW4g", "IkZe4pXDv0k", "ZT0in30U-ug", "kqDqSLOuxmM", "ZgLsNSWN46o", ...] 15:04:01.735 [debug] QUERY OK source="media_items" db=1.1ms idle=429.3ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [24] 15:04:01.747 [debug] QUERY OK source="tasks" db=9.8ms idle=430.6ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [203213, 24, ~U[2026-01-03 04:04:01Z], ~U[2026-01-03 04:04:01Z]] 15:04:01.751 [info] {"args":{"id":24},"id":203189,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":445192,"event":"job:stop","queue_time":464922,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 15:04:04.618 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=aCES82xfgdw --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/10/4c/104c88aab5517dcad673229a1a9bddb872a2f08bf605a230398eba8b8e4d1619.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 1 with: ERROR: [youtube] aCES82xfgdw: Sign in to confirm your age. This video may be inappropriate for some users. Use --cookies-from-browser or --cookies for the authentication. See https://github.com/yt-dlp/yt-dlp/wiki/FAQ#how-do-i-pass-cookies-to-yt-dlp for how to manually pass cookies. Also see https://github.com/yt-dlp/yt-dlp/wiki/Extractors#exporting-youtube-cookies for tips on effectively exporting YouTube cookies 15:04:04.619 [error] yt-dlp download error for media item #8350: "ERROR: [youtube] aCES82xfgdw: Sign in to confirm your age. This video may be inappropriate for some users. Use --cookies-from-browser or --cookies for the authentication. See https://github.com/yt-dlp/yt-dlp/wiki/FAQ#how-do-i-pass-cookies-to-yt-dlp for how to manually pass cookies. Also see https://github.com/yt-dlp/yt-dlp/wiki/Extractors#exporting-youtube-cookies for tips on effectively exporting YouTube cookies\n" 15:04:04.619 [error] yt-dlp download will not be retried: "ERROR: [youtube] aCES82xfgdw: Sign in to confirm your age. This video may be inappropriate for some users. Use --cookies-from-browser or --cookies for the authentication. See https://github.com/yt-dlp/yt-dlp/wiki/FAQ#how-do-i-pass-cookies-to-yt-dlp for how to manually pass cookies. Also see https://github.com/yt-dlp/yt-dlp/wiki/Extractors#exporting-youtube-cookies for tips on effectively exporting YouTube cookies\n" 15:04:04.622 [info] {"args":{"id":8350},"id":203208,"meta":{},"state":"success","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":10943560,"event":"job:stop","queue_time":674743,"attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 15:04:04.630 [info] {"args":{"id":8401},"id":203210,"meta":{},"system_time":1767413044630348908,"max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 15:04:04.631 [debug] QUERY OK source="media_items" db=0.7ms idle=1844.4ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [8401] 15:04:04.631 [info] User scripts lifecyle file either not present or is empty. Skipping. 15:04:04.632 [debug] QUERY OK source="sources" db=0.7ms idle=1329.8ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [7] 15:04:04.633 [debug] QUERY OK source="media_profiles" db=0.6ms idle=327.2ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 15:04:04.635 [debug] QUERY OK source="media_items" db=1.0ms queue=0.1ms idle=12.2ms SELECT 1 FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) LIMIT 1 [8401] 15:04:04.636 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=bhkmFO8DikY --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/9a/3c/9a3c6c27778b2249a182d22fea15086338f1d10a53f8af94caf74d7e62172442.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 1 with: ERROR: [youtube] bhkmFO8DikY: Sign in to confirm your age. This video may be inappropriate for some users. Use --cookies-from-browser or --cookies for the authentication. See https://github.com/yt-dlp/yt-dlp/wiki/FAQ#how-do-i-pass-cookies-to-yt-dlp for how to manually pass cookies. Also see https://github.com/yt-dlp/yt-dlp/wiki/Extractors#exporting-youtube-cookies for tips on effectively exporting YouTube cookies 15:04:04.637 [error] yt-dlp download error for media item #8380: "ERROR: [youtube] bhkmFO8DikY: Sign in to confirm your age. This video may be inappropriate for some users. Use --cookies-from-browser or --cookies for the authentication. See https://github.com/yt-dlp/yt-dlp/wiki/FAQ#how-do-i-pass-cookies-to-yt-dlp for how to manually pass cookies. Also see https://github.com/yt-dlp/yt-dlp/wiki/Extractors#exporting-youtube-cookies for tips on effectively exporting YouTube cookies\n" 15:04:04.637 [debug] QUERY OK source="media_metadata" db=0.2ms idle=6.7ms SELECT m0."id", m0."metadata_filepath", m0."thumbnail_filepath", m0."media_item_id", m0."inserted_at", m0."updated_at", m0."media_item_id" FROM "media_metadata" AS m0 WHERE (m0."media_item_id" = ?) [8401] 15:04:04.637 [error] yt-dlp download will not be retried: "ERROR: [youtube] bhkmFO8DikY: Sign in to confirm your age. This video may be inappropriate for some users. Use --cookies-from-browser or --cookies for the authentication. See https://github.com/yt-dlp/yt-dlp/wiki/FAQ#how-do-i-pass-cookies-to-yt-dlp for how to manually pass cookies. Also see https://github.com/yt-dlp/yt-dlp/wiki/Extractors#exporting-youtube-cookies for tips on effectively exporting YouTube cookies\n" 15:04:04.637 [debug] QUERY OK source="media_profiles" db=0.3ms idle=5.9ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 15:04:04.638 [info] {"args":{"id":8380},"id":203209,"meta":{},"state":"success","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":10960929,"event":"job:stop","queue_time":674743,"attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 15:04:04.638 [debug] QUERY OK source="settings" db=0.3ms idle=4.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:04:04.639 [debug] QUERY OK source="settings" db=0.1ms idle=3.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:04:04.639 [debug] Running yt-dlp command for action: get_downloadable_status 15:04:04.641 [debug] QUERY OK source="settings" db=0.2ms idle=3.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:04:04.641 [debug] QUERY OK source="settings" db=0.2ms idle=3.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:04:04.642 [debug] QUERY OK source="settings" db=0.1ms idle=3.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:04:04.642 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=ZWSj0M132e8 --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/dc/79/dc794c809bddfe98d976cc87085f6df075d52f00da623c53759a824b8674b34f.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 15:04:04.645 [info] {"args":{"id":8418},"id":203211,"meta":{},"system_time":1767413044644943481,"max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 15:04:04.645 [debug] QUERY OK source="media_items" db=0.2ms queue=0.1ms idle=6.2ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [8418] 15:04:04.646 [info] User scripts lifecyle file either not present or is empty. Skipping. 15:04:04.646 [debug] QUERY OK source="sources" db=0.2ms idle=5.2ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [7] 15:04:04.647 [debug] QUERY OK source="media_profiles" db=0.1ms idle=5.3ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 15:04:04.648 [debug] QUERY OK source="media_items" db=0.5ms idle=5.8ms SELECT 1 FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) LIMIT 1 [8418] 15:04:04.649 [debug] QUERY OK source="media_metadata" db=0.1ms idle=4.6ms SELECT m0."id", m0."metadata_filepath", m0."thumbnail_filepath", m0."media_item_id", m0."inserted_at", m0."updated_at", m0."media_item_id" FROM "media_metadata" AS m0 WHERE (m0."media_item_id" = ?) [8418] 15:04:04.650 [debug] QUERY OK source="media_profiles" db=0.2ms queue=0.1ms idle=4.0ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 15:04:04.651 [debug] QUERY OK source="settings" db=0.1ms idle=4.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:04:04.651 [debug] QUERY OK source="settings" db=0.1ms idle=4.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:04:04.652 [debug] Running yt-dlp command for action: get_downloadable_status 15:04:04.654 [debug] QUERY OK source="settings" db=0.2ms idle=5.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:04:04.654 [debug] QUERY OK source="settings" db=0.1ms queue=0.1ms idle=4.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:04:04.655 [debug] QUERY OK source="settings" db=0.1ms idle=4.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:04:04.655 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=v6jHhzj08yQ --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/f6/53/f6539cf8fac4ea06587de3bb82c2b57b01864007834900feb47a58e150502935.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 15:04:10.165 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=ZWSj0M132e8 --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/dc/79/dc794c809bddfe98d976cc87085f6df075d52f00da623c53759a824b8674b34f.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 1 with: ERROR: [youtube] ZWSj0M132e8: Sign in to confirm your age. This video may be inappropriate for some users. Use --cookies-from-browser or --cookies for the authentication. See https://github.com/yt-dlp/yt-dlp/wiki/FAQ#how-do-i-pass-cookies-to-yt-dlp for how to manually pass cookies. Also see https://github.com/yt-dlp/yt-dlp/wiki/Extractors#exporting-youtube-cookies for tips on effectively exporting YouTube cookies 15:04:10.166 [debug] QUERY OK source="settings" db=0.7ms idle=842.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:04:10.167 [debug] QUERY OK source="settings" db=0.4ms idle=380.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:04:10.168 [debug] Running yt-dlp command for action: get_downloadable_status 15:04:10.170 [debug] QUERY OK source="settings" db=0.4ms idle=384.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:04:10.171 [debug] QUERY OK source="settings" db=0.5ms idle=384.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:04:10.171 [debug] QUERY OK source="settings" db=0.3ms idle=385.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:04:10.172 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=ZWSj0M132e8 --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/13/84/1384ac3a251770d926e011a8a34c93f2e451ff860d10f22cda0e89ec449d5357.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 15:04:10.332 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=v6jHhzj08yQ --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/f6/53/f6539cf8fac4ea06587de3bb82c2b57b01864007834900feb47a58e150502935.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 1 with: ERROR: [youtube] v6jHhzj08yQ: Sign in to confirm your age. This video may be inappropriate for some users. Use --cookies-from-browser or --cookies for the authentication. See https://github.com/yt-dlp/yt-dlp/wiki/FAQ#how-do-i-pass-cookies-to-yt-dlp for how to manually pass cookies. Also see https://github.com/yt-dlp/yt-dlp/wiki/Extractors#exporting-youtube-cookies for tips on effectively exporting YouTube cookies 15:04:10.333 [debug] QUERY OK source="settings" db=0.4ms idle=165.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:04:10.334 [debug] QUERY OK source="settings" db=0.5ms queue=0.1ms idle=163.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:04:10.335 [debug] Running yt-dlp command for action: get_downloadable_status 15:04:10.337 [debug] QUERY OK source="settings" db=0.3ms idle=165.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:04:10.338 [debug] QUERY OK source="settings" db=0.2ms queue=0.1ms idle=166.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:04:10.339 [debug] QUERY OK source="settings" db=0.4ms queue=0.1ms idle=10.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:04:10.339 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=v6jHhzj08yQ --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/cd/14/cd140d0fe845999d1cfa390f2cedee5afb447f96b5e15baa21685923c71e5f0f.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 15:04:11.234 [info] GET /sources/21/media/59028 15:04:11.234 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "59028", "source_id" => "21"} Pipelines: [:browser] 15:04:11.235 [info] GET /sources/21/media/58974/edit 15:04:11.235 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "58974", "source_id" => "21"} Pipelines: [:browser] 15:04:11.235 [debug] QUERY OK source="media_items" db=0.5ms idle=901.2ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [59028] 15:04:11.236 [debug] QUERY OK source="media_items" db=0.8ms idle=900.7ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [58974] 15:04:11.237 [debug] QUERY OK source="tasks" db=0.4ms queue=0.1ms idle=898.9ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [59028] 15:04:11.237 [debug] QUERY OK source="sources" db=1.1ms idle=898.2ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [21] 15:04:11.238 [debug] QUERY OK source="settings" db=0.6ms queue=0.1ms idle=898.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:04:11.238 [debug] QUERY OK source="settings" db=0.2ms queue=0.1ms idle=2.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:04:11.239 [debug] QUERY OK source="settings" db=0.4ms idle=1.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:04:11.239 [debug] QUERY OK source="settings" db=0.2ms queue=0.1ms idle=2.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:04:11.239 [debug] QUERY OK source="settings" db=0.1ms idle=1.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:04:11.240 [debug] QUERY OK source="settings" db=0.2ms queue=0.1ms idle=2.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:04:11.242 [debug] QUERY OK source="media_profiles" db=0.2ms queue=0.1ms idle=3.7ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 15:04:11.243 [info] Sent 200 in 7ms 15:04:11.246 [info] Sent 200 in 11ms 15:04:12.058 [info] GET /sources/21/media/58984/edit 15:04:12.059 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "58984", "source_id" => "21"} Pipelines: [:browser] 15:04:12.060 [debug] QUERY OK source="media_items" db=0.9ms queue=0.1ms idle=820.1ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [58984] 15:04:12.062 [debug] QUERY OK source="settings" db=0.3ms idle=821.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:04:12.062 [debug] QUERY OK source="settings" db=0.1ms idle=821.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:04:12.064 [debug] QUERY OK source="settings" db=0.1ms idle=820.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:04:12.066 [info] Sent 200 in 8ms 15:04:13.501 [info] {"source":"oban","duration":2071,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:04:15.577 [info] GET /sources/23/media/21385/force_download 15:04:15.578 [debug] QUERY OK source="settings" db=0.5ms idle=1791.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:04:15.579 [debug] QUERY OK source="settings" db=0.4ms idle=1792.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:04:15.579 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 15:04:15.580 [error] #PID<0.11819.0> running PinchflatWeb.Endpoint (connection #PID<0.11818.0>, stream id 1) terminated Server: pinchflat.uiau7e.uncld.dev:80 (http) Request: GET /sources/23/media/21385/force_download ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/23/media/21385/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.11818.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/23/media/21385/force_download", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 56434}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYeVgwUXZscEtpeDhqX3JKYS1JTnFwQkdR.nlIkygd72EVYa1aBz8gowWHJqt8KEdrto3joNcOWEA0", "from" => "gptbot(at)openai.com", "host" => "pinchflat.uiau7e.uncld.dev", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.3; +https://openai.com/gptbot)", "via" => "2.0 Caddy", "x-forwarded-for" => "74.7.227.183", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https", "x-openai-host-hash" => "454925582" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{ "_pinchflat_key" => "SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYeVgwUXZscEtpeDhqX3JKYS1JTnFwQkdR.nlIkygd72EVYa1aBz8gowWHJqt8KEdrto3joNcOWEA0" }, halted: false, host: "pinchflat.uiau7e.uncld.dev", method: "GET", owner: #PID<0.11819.0>, params: %{}, path_info: ["sources", "23", "media", "21385", "force_download"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.uiau7e.uncld.dev", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {10, 210, 0, 2}, req_cookies: %{ "_pinchflat_key" => "SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYeVgwUXZscEtpeDhqX3JKYS1JTnFwQkdR.nlIkygd72EVYa1aBz8gowWHJqt8KEdrto3joNcOWEA0" }, req_headers: [ {"accept", "*/*"}, {"accept-encoding", "gzip, br, deflate"}, {"cookie", "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYeVgwUXZscEtpeDhqX3JKYS1JTnFwQkdR.nlIkygd72EVYa1aBz8gowWHJqt8KEdrto3joNcOWEA0"}, {"from", "gptbot(at)openai.com"}, {"host", "pinchflat.uiau7e.uncld.dev"}, {"user-agent", "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.3; +https://openai.com/gptbot)"}, {"via", "2.0 Caddy"}, {"x-forwarded-for", "74.7.227.183"}, {"x-forwarded-host", "pinchflat.uiau7e.uncld.dev"}, {"x-forwarded-proto", "https"}, {"x-openai-host-hash", "454925582"} ], request_path: "/sources/23/media/21385/force_download", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GIccz1UXpgNQU10AAkoB"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.11818.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/23/media/21385/force_download", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 56434}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYeVgwUXZscEtpeDhqX3JKYS1JTnFwQkdR.nlIkygd72EVYa1aBz8gowWHJqt8KEdrto3joNcOWEA0", "from" => "gptbot(at)openai.com", "host" => "pinchflat.uiau7e.uncld.dev", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.3; +https://openai.com/gptbot)", "via" => "2.0 Caddy", "x-forwarded-for" => "74.7.227.183", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https", "x-openai-host-hash" => "454925582" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/23/media/21385/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.11818.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/23/media/21385/force_download", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 56434}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYeVgwUXZscEtpeDhqX3JKYS1JTnFwQkdR.nlIkygd72EVYa1aBz8gowWHJqt8KEdrto3joNcOWEA0", "from" => "gptbot(at)openai.com", "host" => "pinchflat.uiau7e.uncld.dev", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.3; +https://openai.com/gptbot)", "via" => "2.0 Caddy", "x-forwarded-for" => "74.7.227.183", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https", "x-openai-host-hash" => "454925582" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{ " (truncated) 15:04:15.838 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=v6jHhzj08yQ --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/cd/14/cd140d0fe845999d1cfa390f2cedee5afb447f96b5e15baa21685923c71e5f0f.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 1 with: ERROR: [youtube] v6jHhzj08yQ: Sign in to confirm your age. This video may be inappropriate for some users. Use --cookies-from-browser or --cookies for the authentication. See https://github.com/yt-dlp/yt-dlp/wiki/FAQ#how-do-i-pass-cookies-to-yt-dlp for how to manually pass cookies. Also see https://github.com/yt-dlp/yt-dlp/wiki/Extractors#exporting-youtube-cookies for tips on effectively exporting YouTube cookies 15:04:15.838 [error] yt-dlp download error for media item #8418: "ERROR: [youtube] v6jHhzj08yQ: Sign in to confirm your age. This video may be inappropriate for some users. Use --cookies-from-browser or --cookies for the authentication. See https://github.com/yt-dlp/yt-dlp/wiki/FAQ#how-do-i-pass-cookies-to-yt-dlp for how to manually pass cookies. Also see https://github.com/yt-dlp/yt-dlp/wiki/Extractors#exporting-youtube-cookies for tips on effectively exporting YouTube cookies\n" 15:04:15.839 [error] yt-dlp download will not be retried: "ERROR: [youtube] v6jHhzj08yQ: Sign in to confirm your age. This video may be inappropriate for some users. Use --cookies-from-browser or --cookies for the authentication. See https://github.com/yt-dlp/yt-dlp/wiki/FAQ#how-do-i-pass-cookies-to-yt-dlp for how to manually pass cookies. Also see https://github.com/yt-dlp/yt-dlp/wiki/Extractors#exporting-youtube-cookies for tips on effectively exporting YouTube cookies\n" 15:04:15.840 [info] {"args":{"id":8418},"id":203211,"meta":{},"state":"success","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":11194141,"event":"job:stop","queue_time":11643779,"attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 15:04:16.018 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=ZWSj0M132e8 --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/13/84/1384ac3a251770d926e011a8a34c93f2e451ff860d10f22cda0e89ec449d5357.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 1 with: ERROR: [youtube] ZWSj0M132e8: Sign in to confirm your age. This video may be inappropriate for some users. Use --cookies-from-browser or --cookies for the authentication. See https://github.com/yt-dlp/yt-dlp/wiki/FAQ#how-do-i-pass-cookies-to-yt-dlp for how to manually pass cookies. Also see https://github.com/yt-dlp/yt-dlp/wiki/Extractors#exporting-youtube-cookies for tips on effectively exporting YouTube cookies 15:04:16.018 [error] yt-dlp download error for media item #8401: "ERROR: [youtube] ZWSj0M132e8: Sign in to confirm your age. This video may be inappropriate for some users. Use --cookies-from-browser or --cookies for the authentication. See https://github.com/yt-dlp/yt-dlp/wiki/FAQ#how-do-i-pass-cookies-to-yt-dlp for how to manually pass cookies. Also see https://github.com/yt-dlp/yt-dlp/wiki/Extractors#exporting-youtube-cookies for tips on effectively exporting YouTube cookies\n" 15:04:16.018 [error] yt-dlp download will not be retried: "ERROR: [youtube] ZWSj0M132e8: Sign in to confirm your age. This video may be inappropriate for some users. Use --cookies-from-browser or --cookies for the authentication. See https://github.com/yt-dlp/yt-dlp/wiki/FAQ#how-do-i-pass-cookies-to-yt-dlp for how to manually pass cookies. Also see https://github.com/yt-dlp/yt-dlp/wiki/Extractors#exporting-youtube-cookies for tips on effectively exporting YouTube cookies\n" 15:04:16.019 [info] {"args":{"id":8401},"id":203210,"meta":{},"state":"success","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":11388270,"event":"job:stop","queue_time":11627760,"attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 15:04:24.097 [info] GET /sources/21/media/58974 15:04:24.097 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "58974", "source_id" => "21"} Pipelines: [:browser] 15:04:24.099 [debug] QUERY OK source="media_items" db=0.6ms queue=0.1ms idle=725.5ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [58974] 15:04:24.099 [info] GET /sources/21/media/40805/edit 15:04:24.099 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "40805", "source_id" => "21"} Pipelines: [:browser] 15:04:24.100 [debug] QUERY OK source="tasks" db=0.5ms idle=313.5ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [58974] 15:04:24.101 [debug] QUERY OK source="sources" db=1.3ms idle=313.6ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [21] 15:04:24.101 [debug] QUERY OK source="media_items" db=0.8ms idle=314.0ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [40805] 15:04:24.101 [debug] QUERY OK source="oban_jobs" db=0.2ms idle=315.3ms SELECT o0."id", o0."state", o0."queue", o0."worker", o0."args", o0."meta", o0."tags", o0."errors", o0."attempt", o0."attempted_by", o0."max_attempts", o0."priority", o0."attempted_at", o0."cancelled_at", o0."completed_at", o0."discarded_at", o0."inserted_at", o0."scheduled_at", o0."id" FROM "oban_jobs" AS o0 WHERE (o0."id" = ?) [202131] 15:04:24.102 [debug] QUERY OK source="settings" db=0.5ms queue=0.1ms idle=2.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:04:24.102 [debug] QUERY OK source="settings" db=0.6ms queue=0.1ms idle=1.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:04:24.103 [debug] QUERY OK source="settings" db=0.4ms idle=1.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:04:24.103 [debug] QUERY OK source="settings" db=0.4ms idle=1.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:04:24.104 [debug] QUERY OK source="settings" db=0.3ms idle=1.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:04:24.104 [debug] QUERY OK source="settings" db=0.4ms queue=0.2ms idle=1.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:04:24.105 [debug] QUERY OK source="media_profiles" db=0.7ms idle=2.0ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 15:04:24.106 [info] Sent 200 in 7ms 15:04:24.122 [info] Sent 200 in 24ms 15:04:25.013 [info] GET /sources/21/media/59018/edit 15:04:25.014 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "59018", "source_id" => "21"} Pipelines: [:browser] 15:04:25.015 [debug] QUERY OK source="media_items" db=0.4ms idle=911.1ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [59018] 15:04:25.016 [debug] QUERY OK source="settings" db=0.3ms idle=911.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:04:25.016 [debug] QUERY OK source="settings" db=0.1ms queue=0.1ms idle=911.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:04:25.017 [debug] QUERY OK source="settings" db=0.2ms idle=911.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:04:25.020 [info] Sent 200 in 6ms 15:04:35.018 [info] GET /sources/13/media/12709/force_download 15:04:35.019 [debug] QUERY OK source="settings" db=0.4ms idle=606.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:04:35.019 [debug] QUERY OK source="settings" db=0.4ms idle=232.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:04:35.019 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 15:04:35.020 [error] #PID<0.11831.0> running PinchflatWeb.Endpoint (connection #PID<0.11830.0>, stream id 1) terminated Server: pinchflat.uiau7e.uncld.dev:80 (http) Request: GET /sources/13/media/12709/force_download ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/13/media/12709/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.11830.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/13/media/12709/force_download", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 40924}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYeVgwUXZscEtpeDhqX3JKYS1JTnFwQkdR.nlIkygd72EVYa1aBz8gowWHJqt8KEdrto3joNcOWEA0", "from" => "gptbot(at)openai.com", "host" => "pinchflat.uiau7e.uncld.dev", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.3; +https://openai.com/gptbot)", "via" => "2.0 Caddy", "x-forwarded-for" => "74.7.227.183", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https", "x-openai-host-hash" => "454925582" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{ "_pinchflat_key" => "SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYeVgwUXZscEtpeDhqX3JKYS1JTnFwQkdR.nlIkygd72EVYa1aBz8gowWHJqt8KEdrto3joNcOWEA0" }, halted: false, host: "pinchflat.uiau7e.uncld.dev", method: "GET", owner: #PID<0.11831.0>, params: %{}, path_info: ["sources", "13", "media", "12709", "force_download"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.uiau7e.uncld.dev", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {10, 210, 0, 2}, req_cookies: %{ "_pinchflat_key" => "SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYeVgwUXZscEtpeDhqX3JKYS1JTnFwQkdR.nlIkygd72EVYa1aBz8gowWHJqt8KEdrto3joNcOWEA0" }, req_headers: [ {"accept", "*/*"}, {"accept-encoding", "gzip, br, deflate"}, {"cookie", "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYeVgwUXZscEtpeDhqX3JKYS1JTnFwQkdR.nlIkygd72EVYa1aBz8gowWHJqt8KEdrto3joNcOWEA0"}, {"from", "gptbot(at)openai.com"}, {"host", "pinchflat.uiau7e.uncld.dev"}, {"user-agent", "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.3; +https://openai.com/gptbot)"}, {"via", "2.0 Caddy"}, {"x-forwarded-for", "74.7.227.183"}, {"x-forwarded-host", "pinchflat.uiau7e.uncld.dev"}, {"x-forwarded-proto", "https"}, {"x-openai-host-hash", "454925582"} ], request_path: "/sources/13/media/12709/force_download", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GIcc09vWs9acO5oAAkqB"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.11830.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/13/media/12709/force_download", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 40924}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYeVgwUXZscEtpeDhqX3JKYS1JTnFwQkdR.nlIkygd72EVYa1aBz8gowWHJqt8KEdrto3joNcOWEA0", "from" => "gptbot(at)openai.com", "host" => "pinchflat.uiau7e.uncld.dev", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.3; +https://openai.com/gptbot)", "via" => "2.0 Caddy", "x-forwarded-for" => "74.7.227.183", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https", "x-openai-host-hash" => "454925582" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/13/media/12709/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.11830.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/13/media/12709/force_download", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 40924}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYeVgwUXZscEtpeDhqX3JKYS1JTnFwQkdR.nlIkygd72EVYa1aBz8gowWHJqt8KEdrto3joNcOWEA0", "from" => "gptbot(at)openai.com", "host" => "pinchflat.uiau7e.uncld.dev", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.3; +https://openai.com/gptbot)", "via" => "2.0 Caddy", "x-forwarded-for" => "74.7.227.183", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https", "x-openai-host-hash" => "454925582" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{ " (truncated) 15:04:43.506 [info] {"source":"oban","duration":3548,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:04:51.474 [info] {"args":{"id":3},"id":203190,"meta":{},"system_time":1767413091474445057,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 15:04:51.475 [debug] QUERY OK source="sources" db=0.3ms idle=688.7ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [3] 15:04:51.475 [debug] QUERY OK source="settings" db=0.3ms idle=689.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:04:51.476 [debug] QUERY OK source="media_profiles" db=0.6ms idle=689.9ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 15:04:51.477 [debug] QUERY OK source="settings" db=0.6ms idle=10.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:04:51.477 [debug] Fetching recent media IDs from YouTube API for playlist: UUISrVZmDM4x-Rq9mmNUw7Zw 15:04:51.478 [debug] QUERY OK source="settings" db=0.4ms queue=0.1ms idle=3.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:04:51.479 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 15:04:51.967 [debug] QUERY OK source="media_items" db=4.5ms queue=0.1ms idle=487.2ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND m0."media_id" IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [3, "MQ2cHq3-J7A", "CtF5dLHITYA", "SGJkxRdkRGg", "OUCt85aJaAA", "9gARPYZOka4", "-uH-Gi5tjEw", "qwUBBQKYX94", "s8VLDSQJ8nA", "EvPfr0lKkh4", "msXzAxF49gA", "hQCWaSvjkU0", "RcmjVsy3a-g", "xtuNc9vYJG4", "fj2tcg8OzsM", "2FZ4IfPACDM", "2Q9DzW20YJ8", "IVsWFGOE_mw", "vPxpMcv2Z4Y", "Zverj_ldlhY", "pQK8xasPd9Q", "_Yo7nh8u9pk", "4HzltsOvc0A", "a8UBLMm71JY", "3vqbr7-6Twk", "Df0iVjAKJZw", "n-X-AJpHUyI", "4CV7jI0e0Hw", "nqPoocCKci8", "5IIOdWnJGxg", "jkPL8BaM4ko", "CzeQtnRmUZ0", "9u-0d2IVZ3I", "igtvNmqsKM0", "47XDpW4nOzk", "8xvd7xSLQOo", "PnQPZMN0kIY", "feDph2WgRfI", "Z5FZ2XfX4Uc", "e0DxPopyrqM", "YvaK-Tjp2ck", "6_CctUPWX4I", "_DzHKw8yK58", "VnAkeiehyCg", "EFW1iCguDV8", "CEj7B1VzUwU", "3cy5fWUssjQ", "ZnjoTYmqLhs", "5IxtizzvaWw", "ZnBsMRl-EL0", ...] 15:04:51.978 [debug] QUERY OK source="media_items" db=6.7ms idle=495.3ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [3] 15:04:51.984 [debug] QUERY OK source="tasks" db=1.1ms queue=0.1ms idle=503.7ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [203214, 3, ~U[2026-01-03 04:04:51Z], ~U[2026-01-03 04:04:51Z]] 15:04:51.985 [info] {"args":{"id":3},"id":203190,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":509775,"event":"job:stop","queue_time":413773,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 15:04:57.502 [info] {"args":{"id":1},"id":203191,"meta":{},"system_time":1767413097502095324,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 15:04:57.503 [debug] QUERY OK source="sources" db=0.5ms queue=0.1ms idle=1716.6ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 15:04:57.504 [debug] QUERY OK source="settings" db=0.7ms queue=0.2ms idle=1717.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:04:57.505 [debug] QUERY OK source="media_profiles" db=0.6ms queue=0.1ms idle=1018.1ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 15:04:57.506 [debug] QUERY OK source="settings" db=0.4ms queue=0.1ms idle=12.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:04:57.506 [debug] Fetching recent media IDs from YouTube API for playlist: UU54SLBnD5k5U3Q6N__UjbAw 15:04:57.507 [debug] QUERY OK source="settings" db=0.2ms queue=0.2ms idle=5.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:04:57.508 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 15:04:57.873 [debug] QUERY OK source="media_items" db=3.3ms idle=366.3ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND m0."media_id" IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [1, "UYCKIroDVBY", "ynOiaE9f6NY", "At_WjGosTNM", "_s7ZzdPoVZE", "ulhKFEKXIEI", "YpQ2jupcrHk", "PetMnG6cCDw", "VdxlXCnA1DM", "uj2s7HZQigU", "rZ7Y_gPAHig", "LTmK8Ab6IFE", "sZKNVGI8xt0", "_PUZIf6VQto", "J2-1ZErtS7A", "OEyptSEM5Tw", "HLeY2_hJvRk", "DkZ5uXcDxjc", "zPWe_aBuNfM", "PZN18led4ok", "66F09ebI9gw", "Pfok4B_xyaI", "e5HEGCCadBU", "hYFsHfPquPg", "nKsnfEB29ek", "OpDh_O473Ms", "ZTtZ12XtQpg", "TphXloX3PEI", "4Qhp4VPP2Wo", "J5l7jvbp3u8", "uL_YQMkkbUg", "SAZ17l0EwxI", "fTa_T2pVwuk", "6HpTVfX0SvI", "XlIWsRyXL8U", "nM1GQNJU6LQ", "WVN1LNy1zgo", "0Fxf6_q7qHc", "dL0KPsy-Dww", "G43wJ7YyWzM", "yVy89TnL9Zg", "BR1VRJDu-gc", "-2HeoqiMC6s", "7WXyx51z5G8", "jCk-9S8PQyc", "vGEIHv1XelY", "rOI7HYGGHpo", "gNeGHhU6UaI", "gUlkwSHOT7Q", "tpf7TxliCxA", ...] 15:04:57.881 [debug] QUERY OK source="media_items" db=3.3ms idle=373.3ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [1] 15:04:57.885 [debug] QUERY OK source="tasks" db=0.5ms idle=376.7ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [203215, 1, ~U[2026-01-03 04:04:57Z], ~U[2026-01-03 04:04:57Z]] 15:04:57.886 [info] {"args":{"id":1},"id":203191,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":383241,"event":"job:stop","queue_time":522197,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 15:05:00.313 [info] {"source":"oban","duration":653,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 15:05:09.077 [info] GET /sources/21/media/59033/edit 15:05:09.077 [info] GET /sources/21/media/59023 15:05:09.077 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "59033", "source_id" => "21"} Pipelines: [:browser] 15:05:09.077 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "59023", "source_id" => "21"} Pipelines: [:browser] 15:05:09.079 [debug] QUERY OK source="media_items" db=1.1ms queue=0.1ms idle=1292.3ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [59033] 15:05:09.079 [debug] QUERY OK source="media_items" db=1.3ms queue=0.1ms idle=1292.2ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [59023] 15:05:09.081 [debug] QUERY OK source="tasks" db=0.5ms idle=1294.3ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [59023] 15:05:09.081 [debug] QUERY OK source="sources" db=0.6ms queue=0.1ms idle=544.7ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [21] 15:05:09.081 [debug] QUERY OK source="settings" db=0.8ms queue=0.1ms idle=1294.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:05:09.082 [debug] QUERY OK source="settings" db=0.2ms queue=0.1ms idle=2.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:05:09.082 [debug] QUERY OK source="settings" db=0.2ms idle=2.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:05:09.083 [debug] QUERY OK source="settings" db=0.4ms queue=0.1ms idle=1.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:05:09.083 [debug] QUERY OK source="settings" db=0.3ms idle=1.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:05:09.084 [debug] QUERY OK source="settings" db=0.2ms queue=0.1ms idle=2.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:05:09.086 [info] Sent 200 in 9ms 15:05:09.086 [debug] QUERY OK source="media_profiles" db=0.3ms idle=3.9ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 15:05:09.092 [info] Sent 200 in 14ms 15:05:09.926 [info] GET /sources/21/media/59069 15:05:09.927 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "59069", "source_id" => "21"} Pipelines: [:browser] 15:05:09.928 [debug] QUERY OK source="media_items" db=0.5ms queue=0.1ms idle=844.4ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [59069] 15:05:09.929 [debug] QUERY OK source="tasks" db=0.4ms idle=845.8ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [59069] 15:05:09.930 [debug] QUERY OK source="sources" db=0.4ms idle=844.9ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [21] 15:05:09.931 [debug] QUERY OK source="settings" db=0.5ms queue=0.1ms idle=844.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:05:09.932 [debug] QUERY OK source="settings" db=0.1ms idle=393.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:05:09.933 [debug] QUERY OK source="settings" db=0.2ms idle=4.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:05:09.935 [debug] QUERY OK source="media_profiles" db=0.3ms idle=5.1ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 15:05:09.938 [info] Sent 200 in 12ms 15:05:13.510 [info] {"source":"oban","duration":2396,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:05:18.578 [info] {"args":{"id":2},"id":203192,"meta":{},"system_time":1767413118578141876,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 15:05:18.579 [debug] QUERY OK source="sources" db=0.5ms idle=792.6ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [2] 15:05:18.580 [debug] QUERY OK source="settings" db=0.3ms queue=0.1ms idle=793.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:05:18.581 [debug] QUERY OK source="media_profiles" db=0.9ms idle=794.5ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 15:05:18.582 [debug] QUERY OK source="settings" db=0.5ms idle=12.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:05:18.583 [debug] Fetching recent media IDs from YouTube API for playlist: UUeE3lj6pLX_gCd0Yvns517Q 15:05:18.583 [debug] QUERY OK source="settings" db=0.2ms queue=0.1ms idle=5.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:05:18.584 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 15:05:18.942 [debug] QUERY OK source="media_items" db=3.1ms idle=359.8ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND m0."media_id" IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [2, "0k6I__61QDc", "tAnxIOSrasI", "qGmURDZnDhc", "vBsPoGzQPxA", "TiJoEoREmdE", "C-CkKUyzQhA", "K1UWf6n1FmY", "9VKS1P-aXSc", "kt_SNpPa2w4", "oaXa30IfZMc", "pUBcfLBwPXw", "WkG24B0xw1E", "fBQxlA3KI5U", "HbeqOllBS9o", "li1fOq_qqHM", "rsqGEZeczYw", "d7HFMZOp0S4", "oipxUVJUZrc", "cTxE_oPyD9Q", "yJlKrUX8Bvk", "pYtoIdfLeHA", "qPMGKmyQ1AA", "7W651YDFjhc", "EfUXdMBXauI", "804ky1qeBuE", "DRMng-9g9Ng", "Nzp4LPVF_7M", "1psbOjlzkyA", "IwMM9c9Q0Pw", "xhbzG8V0eSA", "-CSyf5_q-XQ", "C__g4XPdYRY", "7-FRyPsqWG0", "0-fliBPsvZI", "xLZYbjMl3hY", "qs36351JQys", "-aty2xx6kTI", "Ty7NA3HvUsk", "w6xdmHLxzSM", "-5YmR5lvMlQ", "fFbRmFdCoYc", "XkPAB-oXAoU", "rTecGGMrRKc", "tHjU0F1najQ", "Z6otzigVvWM", "9m36Ncgctbg", "B1KUJbbpoK0", "rqGLjKlA_tM", "PZDZuoa3kJE", ...] 15:05:18.961 [debug] QUERY OK source="media_items" db=14.9ms idle=365.8ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [2] 15:05:18.966 [debug] QUERY OK source="tasks" db=1.0ms idle=381.6ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [203216, 2, ~U[2026-01-03 04:05:18Z], ~U[2026-01-03 04:05:18Z]] 15:05:18.967 [info] {"args":{"id":2},"id":203192,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":388588,"event":"job:stop","queue_time":273607,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 15:05:27.606 [info] {"args":{"id":22},"id":203193,"meta":{},"system_time":1767413127605953974,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 15:05:27.607 [debug] QUERY OK source="sources" db=0.5ms queue=0.1ms idle=820.4ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [22] 15:05:27.608 [debug] QUERY OK source="settings" db=0.5ms queue=0.1ms idle=821.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:05:27.609 [debug] QUERY OK source="media_profiles" db=0.6ms queue=0.1ms idle=822.4ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 15:05:27.610 [debug] QUERY OK source="settings" db=0.5ms queue=0.1ms idle=12.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:05:27.610 [debug] Fetching recent media IDs from YouTube API for playlist: UUP1RHyOhO98Yn2rMbDBirxA 15:05:27.611 [debug] QUERY OK source="settings" db=0.4ms queue=0.1ms idle=5.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:05:27.612 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 15:05:27.935 [debug] QUERY OK source="media_items" db=2.1ms queue=0.1ms idle=325.7ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND m0."media_id" IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [22, "N5RzDzO54gQ", "5glegyagphQ", "VtiV_RfFqNM", "qNYyH7bMcbI", "MPdiQsg_zQ8", "4-VOc2Aich8", "gMrBK9rp6As", "p0lqYk8_uMI", "aKpQHxUiwxc", "KsuhL0zVo3I", "pCJcoGDsbxc", "_5AR-GKeqlk", "VcJG7rIOjb0", "vRzAE_0VnXQ", "uj_bcWLWMtw", "xRyiudwo_jM", "pTMRT4CRUoM", "W8_LEBSOsPg", "YZuP7d99kCw"] 15:05:27.938 [debug] QUERY OK source="settings" db=0.4ms idle=329.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:05:27.939 [debug] QUERY OK source="settings" db=0.5ms idle=328.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:05:27.939 [debug] Running yt-dlp command for action: get_media_attributes 15:05:27.941 [debug] QUERY OK source="settings" db=0.3ms idle=330.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:05:27.941 [debug] QUERY OK source="settings" db=0.5ms queue=0.1ms idle=329.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:05:27.942 [debug] QUERY OK source="settings" db=0.4ms queue=0.1ms idle=6.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:05:27.943 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=gMrBK9rp6As --simulate --skip-download --output /downloads/White Raven/Season %(upload_date>%Y)S/s%(upload_date>%Y)Se%(upload_date>%m%d)S00 - %(title)S.%(ext)S --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --print-to-file %(.{id,title,live_status,original_url,description,aspect_ratio,duration,upload_date,timestamp,playlist_index,filename})j /tmp/pinchflat/data/a2/d9/a2d9dcc05df4823bd73045addbe1a39c6891952eae59d95be569af2790113073.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 15:05:32.436 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=gMrBK9rp6As --simulate --skip-download --output /downloads/White Raven/Season %(upload_date>%Y)S/s%(upload_date>%Y)Se%(upload_date>%m%d)S00 - %(title)S.%(ext)S --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --print-to-file %(.{id,title,live_status,original_url,description,aspect_ratio,duration,upload_date,timestamp,playlist_index,filename})j /tmp/pinchflat/data/a2/d9/a2d9dcc05df4823bd73045addbe1a39c6891952eae59d95be569af2790113073.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 1 with: ERROR: [youtube] gMrBK9rp6As: Offline. 15:05:32.436 [error] Error creating media item 'gMrBK9rp6As' from URL: {:error, "ERROR: [youtube] gMrBK9rp6As: Offline.\n", 1} 15:05:32.438 [debug] QUERY OK source="media_items" db=1.2ms queue=0.2ms idle=827.5ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [22] 15:05:32.443 [debug] QUERY OK source="tasks" db=0.7ms idle=656.5ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [203217, 22, ~U[2026-01-03 04:05:32Z], ~U[2026-01-03 04:05:32Z]] 15:05:32.444 [info] {"args":{"id":22},"id":203193,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":4837748,"event":"job:stop","queue_time":989519,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 15:05:34.800 [info] GET /sources/17/media/58671 15:05:34.800 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "58671", "prevent_download" => "true", "source_id" => "17"} Pipelines: [:browser] 15:05:34.802 [debug] QUERY OK source="media_items" db=0.5ms queue=0.1ms idle=1015.2ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [58671] 15:05:34.803 [debug] QUERY OK source="tasks" db=0.6ms idle=1016.3ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [58671] 15:05:34.803 [debug] QUERY OK source="sources" db=0.9ms idle=1016.4ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [17] 15:05:34.804 [debug] QUERY OK source="oban_jobs" db=0.3ms idle=1017.8ms SELECT o0."id", o0."state", o0."queue", o0."worker", o0."args", o0."meta", o0."tags", o0."errors", o0."attempt", o0."attempted_by", o0."max_attempts", o0."priority", o0."attempted_at", o0."cancelled_at", o0."completed_at", o0."discarded_at", o0."inserted_at", o0."scheduled_at", o0."id" FROM "oban_jobs" AS o0 WHERE (o0."id" = ?) [202029] 15:05:34.805 [debug] QUERY OK source="settings" db=0.4ms queue=0.1ms idle=186.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:05:34.806 [debug] QUERY OK source="settings" db=0.3ms idle=3.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:05:34.806 [debug] QUERY OK source="settings" db=0.2ms queue=0.1ms idle=3.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:05:34.808 [debug] QUERY OK source="media_profiles" db=0.2ms idle=4.2ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 15:05:34.836 [info] Sent 200 in 35ms 15:05:43.514 [info] {"source":"oban","duration":3842,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:05:48.157 [info] GET /sources/21 15:05:48.157 [debug] Processing with PinchflatWeb.Sources.SourceController.show/2 Parameters: %{"delete_files" => "true", "id" => "21"} Pipelines: [:browser] 15:05:48.158 [info] GET /sources/21/media/58999/edit 15:05:48.158 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "58999", "source_id" => "21"} Pipelines: [:browser] 15:05:48.159 [debug] QUERY OK source="sources" db=1.1ms idle=1371.8ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [21] 15:05:48.159 [debug] QUERY OK source="media_items" db=0.9ms idle=1372.3ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [58999] 15:05:48.160 [debug] QUERY OK source="media_profiles" db=0.8ms queue=0.1ms idle=1373.3ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 15:05:48.160 [debug] QUERY OK source="settings" db=0.5ms idle=1373.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:05:48.161 [debug] QUERY OK source="settings" db=0.7ms idle=506.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:05:48.162 [debug] QUERY OK source="tasks" db=1.9ms idle=1.6ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at" FROM "tasks" AS t0 INNER JOIN "oban_jobs" AS o1 ON o1."id" = t0."job_id" WHERE (t0."source_id" = ?) AND (o1."state" IN (?,?,?,?)) [21, "executing", "available", "scheduled", "retryable"] 15:05:48.162 [debug] QUERY OK source="settings" db=0.7ms idle=2.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:05:48.164 [debug] QUERY OK source="oban_jobs" db=1.1ms idle=2.6ms SELECT o0."id", o0."state", o0."queue", o0."worker", o0."args", o0."meta", o0."tags", o0."errors", o0."attempt", o0."attempted_by", o0."max_attempts", o0."priority", o0."attempted_at", o0."cancelled_at", o0."completed_at", o0."discarded_at", o0."inserted_at", o0."scheduled_at", o0."id" FROM "oban_jobs" AS o0 WHERE (o0."id" IN (?,?)) [203203, 202184] 15:05:48.165 [info] Sent 200 in 7ms 15:05:48.165 [debug] QUERY OK source="settings" db=0.5ms queue=0.2ms idle=3.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:05:48.166 [debug] QUERY OK source="settings" db=0.4ms idle=4.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:05:48.167 [debug] QUERY OK source="settings" db=0.7ms queue=0.1ms idle=4.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:05:48.173 [debug] QUERY OK source="sources" db=0.6ms idle=10.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [21] 15:05:48.182 [debug] QUERY OK source="media_items" db=7.9ms idle=10.3ms SELECT count(m0."id") FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [21] 15:05:48.187 [debug] QUERY OK source="media_items" db=4.5ms queue=0.1ms idle=17.7ms SELECT m0."id", m0."title", m0."uploaded_at", m0."prevent_download", m0."last_error" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) ORDER BY m0."uploaded_at" DESC LIMIT ? OFFSET ? [21, 10, 0] 15:05:48.189 [debug] QUERY OK source="sources" db=0.3ms idle=22.7ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [21] 15:05:48.190 [debug] QUERY OK source="media_items" db=0.8ms queue=0.1ms idle=22.0ms SELECT count(m0."id") FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND NOT (m0."media_filepath" IS NULL)) [21] 15:05:48.198 [debug] QUERY OK source="media_items" db=6.7ms queue=0.1ms idle=17.3ms SELECT m0."id", m0."title", m0."uploaded_at", m0."prevent_download", m0."last_error" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND NOT (m0."media_filepath" IS NULL)) ORDER BY m0."uploaded_at" DESC LIMIT ? OFFSET ? [21, 10, 0] 15:05:48.201 [debug] QUERY OK source="sources" db=0.6ms queue=0.1ms idle=18.2ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [21] 15:05:48.205 [debug] QUERY OK source="media_items" db=3.5ms idle=14.3ms SELECT count(m0."id") FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds"))))) [21] 15:05:48.214 [debug] QUERY OK source="media_items" db=8.3ms queue=0.1ms idle=16.9ms SELECT m0."id", m0."title", m0."uploaded_at", m0."prevent_download", m0."last_error" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds"))))) ORDER BY m0."uploaded_at" DESC LIMIT ? OFFSET ? [21, 10, 0] 15:05:48.219 [info] Sent 200 in 61ms 15:05:48.923 [info] GET /sources/21/media/59038/edit 15:05:48.924 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "59038", "source_id" => "21"} Pipelines: [:browser] 15:05:48.925 [debug] QUERY OK source="media_items" db=1.1ms idle=726.5ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [59038] 15:05:48.927 [debug] QUERY OK source="settings" db=0.6ms queue=0.1ms idle=724.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:05:48.928 [debug] QUERY OK source="settings" db=0.6ms idle=721.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:05:48.929 [debug] QUERY OK source="settings" db=0.4ms idle=713.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:05:48.930 [info] Sent 200 in 6ms 15:05:57.808 [info] GET /sources/09902ec5-9171-4281-b14f-6d43687c6b1c/feed.xml 15:05:57.808 [debug] Processing with PinchflatWeb.Podcasts.PodcastController.rss_feed/2 Parameters: %{"uuid" => "09902ec5-9171-4281-b14f-6d43687c6b1c"} Pipelines: [:maybe_basic_auth] 15:05:57.808 [info] GET /sources/opml.xml 15:05:57.808 [debug] Processing with PinchflatWeb.Podcasts.PodcastController.opml_feed/2 Parameters: %{"route_token" => "8ce88d66-3e61-447a-a5f3-d1b1865157bf"} Pipelines: [:maybe_basic_auth, :token_protected_route] 15:05:57.809 [debug] QUERY OK source="sources" db=1.1ms idle=1022.2ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."uuid" = ?) ["09902ec5-9171-4281-b14f-6d43687c6b1c"] 15:05:57.809 [debug] QUERY OK source="settings" db=0.7ms queue=0.1ms idle=1022.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:05:57.811 [debug] QUERY OK source="sources" db=1.4ms idle=1023.9ms SELECT s0."custom_name", s0."uuid" FROM "sources" AS s0 WHERE (s0."marked_for_deletion_at" IS NULL) ORDER BY s0."custom_name" [] 15:05:57.813 [debug] QUERY OK source="media_items" db=2.5ms queue=0.1ms idle=1023.9ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND NOT (m0."media_filepath" IS NULL)) ORDER BY m0."uploaded_at" DESC LIMIT ? [21, 2000] 15:05:57.813 [info] Sent 200 in 5ms 15:05:57.991 [debug] QUERY OK source="source_metadata" db=0.7ms queue=0.1ms idle=297.2ms SELECT s0."id", s0."metadata_filepath", s0."fanart_filepath", s0."poster_filepath", s0."banner_filepath", s0."source_id", s0."inserted_at", s0."updated_at", s0."source_id" FROM "source_metadata" AS s0 WHERE (s0."source_id" = ?) [21] 15:05:57.991 [debug] QUERY OK source="media_metadata" db=0.3ms idle=181.9ms SELECT m0."id", m0."metadata_filepath", m0."thumbnail_filepath", m0."media_item_id", m0."inserted_at", m0."updated_at", m0."media_item_id" FROM "media_metadata" AS m0 WHERE (m0."media_item_id" = ?) [58974] 15:05:57.992 [info] Sent 200 in 184ms 15:05:58.306 [info] GET /sources/new 15:05:58.306 [debug] Processing with PinchflatWeb.Sources.SourceController.new/2 Parameters: %{"template_id" => "21"} Pipelines: [:browser] 15:05:58.308 [debug] QUERY OK source="sources" db=1.0ms idle=497.2ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [21] 15:05:58.309 [debug] QUERY OK source="media_profiles" db=0.8ms idle=496.8ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at" FROM "media_profiles" AS m0 ORDER BY m0."name" [] 15:05:58.310 [debug] QUERY OK source="settings" db=0.4ms idle=497.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:05:58.312 [debug] QUERY OK source="settings" db=0.3ms queue=0.2ms idle=320.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:05:58.312 [debug] QUERY OK source="settings" db=0.3ms idle=320.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:05:58.314 [debug] QUERY OK source="settings" db=0.4ms idle=5.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:05:58.315 [debug] QUERY OK source="settings" db=0.3ms idle=5.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:05:58.318 [info] Sent 200 in 12ms 15:06:00.315 [info] {"source":"oban","duration":513,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 15:06:13.517 [info] {"source":"oban","duration":1973,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:06:14.750 [info] {"args":{"id":26},"id":203194,"meta":{},"system_time":1767413174750590153,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 15:06:14.751 [debug] QUERY OK source="sources" db=0.5ms idle=965.2ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [26] 15:06:14.752 [debug] QUERY OK source="settings" db=0.6ms idle=966.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:06:14.753 [debug] QUERY OK source="media_profiles" db=0.6ms idle=966.8ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 15:06:14.754 [debug] QUERY OK source="settings" db=0.6ms queue=0.1ms idle=10.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:06:14.754 [debug] Fetching recent media IDs from YouTube API for playlist: UU6NY7eg1FxCfAVX58yL0cJw 15:06:14.755 [debug] QUERY OK source="settings" db=0.1ms queue=0.1ms idle=4.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:06:14.755 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 15:06:15.313 [debug] QUERY OK source="media_items" db=1.7ms idle=560.2ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND m0."media_id" IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [26, "o2tiLxanOd0", "3Hkalon06bY", "acwCbVzHnRM", "m3Cddar422Y", "QItYx18RK4M", "iFrwlymvtTM", "CBKzBKWhNmE", "twi0ZP1ZWew", "MChkfGtdrgI", "usOf_0SOPl8", "7CamgxCV_lg", "CYW3qAtbiSg", "hkLPA0MEUFk", "Z9APq63an58", "MA2a2BtDQtE", "a23hasz0yk8", "o4tK4PhiK_c", "2-lUv1_A_KU", "W6GGXQ4xVdg", "TOIuoWmEqxo", "JRXSDo6asDk", "iAodr4mipf0", "12wArTNB9dk", "CFZ0TtEbofU", "RwW6yAVtf6Q", "9RshF2jpgLo", "MV8U7XQUpnY", "G0o-l5G0M4s", "FVOkr5w0O0I", "1IFJive9Bvc", "kuc2kAgYD8M", "jHOE86EMHvA", "CjuPAweX08c", "LH0RNHxukJs", "o6OxlF4vAuw", "Qxfr7h-PzdA", "xU_1w6OSnac", "-6G1TNBxp08", "o-ripoq_oXU", "Uevcwu2GLMs", "BAoXgNQ_wRI", "p4NWPk9B20I", "XKxqsR_4w_I", "BNtAWc-vLX4", "ktw-dS-26Gk", "Idbcu-oVtDs", "JCxqgAhaJj4", "A0vzWxUO5TA", "6M0wfDl0LEI", ...] 15:06:15.318 [debug] QUERY OK source="media_items" db=2.7ms idle=562.7ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [26] 15:06:15.321 [debug] QUERY OK source="tasks" db=0.7ms idle=565.1ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [203218, 26, ~U[2026-01-03 04:06:15Z], ~U[2026-01-03 04:06:15Z]] 15:06:15.322 [info] {"args":{"id":26},"id":203194,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":571087,"event":"job:stop","queue_time":381494,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 15:06:36.279 [info] GET /sources/17/media/58671/force_download 15:06:36.281 [debug] QUERY OK source="settings" db=0.7ms queue=0.1ms idle=1494.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:06:36.282 [debug] QUERY OK source="settings" db=0.6ms queue=0.1ms idle=1495.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:06:36.282 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 15:06:36.283 [error] #PID<0.11874.0> running PinchflatWeb.Endpoint (connection #PID<0.11873.0>, stream id 1) terminated Server: pinchflat.uiau7e.uncld.dev:80 (http) Request: GET /sources/17/media/58671/force_download ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/17/media/58671/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.11873.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/17/media/58671/force_download", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 57606}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYeVgwUXZscEtpeDhqX3JKYS1JTnFwQkdR.nlIkygd72EVYa1aBz8gowWHJqt8KEdrto3joNcOWEA0", "from" => "gptbot(at)openai.com", "host" => "pinchflat.uiau7e.uncld.dev", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.3; +https://openai.com/gptbot)", "via" => "2.0 Caddy", "x-forwarded-for" => "74.7.227.183", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https", "x-openai-host-hash" => "454925582" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{ "_pinchflat_key" => "SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYeVgwUXZscEtpeDhqX3JKYS1JTnFwQkdR.nlIkygd72EVYa1aBz8gowWHJqt8KEdrto3joNcOWEA0" }, halted: false, host: "pinchflat.uiau7e.uncld.dev", method: "GET", owner: #PID<0.11874.0>, params: %{}, path_info: ["sources", "17", "media", "58671", "force_download"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.uiau7e.uncld.dev", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {10, 210, 0, 2}, req_cookies: %{ "_pinchflat_key" => "SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYeVgwUXZscEtpeDhqX3JKYS1JTnFwQkdR.nlIkygd72EVYa1aBz8gowWHJqt8KEdrto3joNcOWEA0" }, req_headers: [ {"accept", "*/*"}, {"accept-encoding", "gzip, br, deflate"}, {"cookie", "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYeVgwUXZscEtpeDhqX3JKYS1JTnFwQkdR.nlIkygd72EVYa1aBz8gowWHJqt8KEdrto3joNcOWEA0"}, {"from", "gptbot(at)openai.com"}, {"host", "pinchflat.uiau7e.uncld.dev"}, {"user-agent", "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.3; +https://openai.com/gptbot)"}, {"via", "2.0 Caddy"}, {"x-forwarded-for", "74.7.227.183"}, {"x-forwarded-host", "pinchflat.uiau7e.uncld.dev"}, {"x-forwarded-proto", "https"}, {"x-openai-host-hash", "454925582"} ], request_path: "/sources/17/media/58671/force_download", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GIcc8BeNL2QP8oAAAk3B"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.11873.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/17/media/58671/force_download", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 57606}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYeVgwUXZscEtpeDhqX3JKYS1JTnFwQkdR.nlIkygd72EVYa1aBz8gowWHJqt8KEdrto3joNcOWEA0", "from" => "gptbot(at)openai.com", "host" => "pinchflat.uiau7e.uncld.dev", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.3; +https://openai.com/gptbot)", "via" => "2.0 Caddy", "x-forwarded-for" => "74.7.227.183", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https", "x-openai-host-hash" => "454925582" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/17/media/58671/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.11873.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/17/media/58671/force_download", host: "pinchflat.uiau7e.uncld.dev", peer: {{10, 210, 0, 2}, 57606}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYeVgwUXZscEtpeDhqX3JKYS1JTnFwQkdR.nlIkygd72EVYa1aBz8gowWHJqt8KEdrto3joNcOWEA0", "from" => "gptbot(at)openai.com", "host" => "pinchflat.uiau7e.uncld.dev", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.3; +https://openai.com/gptbot)", "via" => "2.0 Caddy", "x-forwarded-for" => "74.7.227.183", "x-forwarded-host" => "pinchflat.uiau7e.uncld.dev", "x-forwarded-proto" => "https", "x-openai-host-hash" => "454925582" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{ " (truncated) 15:06:43.521 [info] {"source":"oban","duration":2565,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:06:48.861 [info] {"args":{"id":6},"id":203195,"meta":{},"system_time":1767413208861647007,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 15:06:48.862 [debug] QUERY OK source="sources" db=0.4ms idle=1012.8ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [6] 15:06:48.863 [debug] QUERY OK source="settings" db=0.3ms queue=0.1ms idle=77.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:06:48.864 [debug] QUERY OK source="media_profiles" db=0.6ms queue=0.1ms idle=77.7ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 15:06:48.865 [debug] QUERY OK source="settings" db=0.5ms queue=0.1ms idle=10.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:06:48.866 [debug] Fetching recent media IDs from YouTube API for playlist: UUg0m_Ah8P_MQbnn77-vYnYw 15:06:48.866 [debug] QUERY OK source="settings" db=0.6ms idle=4.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:06:48.867 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 15:06:49.425 [debug] QUERY OK source="media_items" db=6.3ms queue=0.1ms idle=555.7ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND m0."media_id" IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [6, "9i6Qm3LV89c", "2PC3HH4izX4", "dJLpdoPNdZ8", "lqRHAbkn9bo", "nlYgNjtr904", "uHKLZ8LcCJA", "V3LW3EWUxqE", "XaTvV6zJEXk", "AjnHxtnxMhk", "vuJTLm11QmQ", "vUzRuvCi6lw", "NlxSd2y_gfI", "ivcFXtMGdE8", "m17ugzx_Ab4", "o5QiLKbHeMI", "moqdU9sMrRk", "Yi55tGTEMqQ", "rHliVvnQ5Pg", "nCZSTFM-v9k", "uasm2RENDH4", "musiLNtEyRY", "uSvqlME0IsI", "Yo0hmtg8LNc", "HOFD3h9Up9w", "uibJMXaSB7c", "NGq1EoY_r2I", "IL-UZlbO3zI", "-_txeeBP6dg", "iH7BiZvsczM", "rIKuiZVHfZo", "HRw20b6hb_s", "xOQPha-de4A", "L6IXwj-_X1k", "_7--BDD2pxk", "Xaq53-12iW8", "bfb-ZBwdvpo", "3DLbHio3ivA", "xhpwyar65ms", "UzEr8RISXds", "tHU6PeO4WDs", "2z1AaBGzA1g", "y-t3hyj7Mz8", "5ZUXEQ6d0dM", "pn8GF5HaKZc", "wH3XASrC2DA", "C_oeOAG0G5E", "c8gYHg1lZCg", "cPEXUpZ6CWk", "jST7T0L_k_w", ...] 15:06:49.433 [debug] QUERY OK source="media_items" db=3.6ms idle=566.2ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [6] 15:06:49.438 [debug] QUERY OK source="tasks" db=0.8ms idle=570.5ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [203219, 6, ~U[2026-01-03 04:06:49Z], ~U[2026-01-03 04:06:49Z]] 15:06:49.439 [info] {"args":{"id":6},"id":203195,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":576969,"event":"job:stop","queue_time":316302,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 15:07:00.318 [info] {"source":"oban","duration":1073,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 15:07:07.199 [info] GET /sources/21/media/59023/edit 15:07:07.199 [info] GET /sources/21/media/59069/edit 15:07:07.200 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "59069", "source_id" => "21"} Pipelines: [:browser] 15:07:07.200 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "59023", "source_id" => "21"} Pipelines: [:browser] 15:07:07.203 [debug] QUERY OK source="media_items" db=2.8ms idle=414.5ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [59023] 15:07:07.203 [debug] QUERY OK source="media_items" db=3.1ms idle=1287.2ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [59069] 15:07:07.204 [debug] QUERY OK source="settings" db=0.5ms idle=417.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:07:07.205 [debug] QUERY OK source="settings" db=0.7ms idle=418.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:07:07.205 [debug] QUERY OK source="settings" db=0.7ms idle=289.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:07:07.206 [debug] QUERY OK source="settings" db=0.9ms idle=1.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:07:07.206 [debug] QUERY OK source="settings" db=0.7ms idle=2.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:07:07.207 [debug] QUERY OK source="settings" db=0.6ms queue=0.1ms idle=2.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:07:07.208 [info] Sent 200 in 8ms 15:07:07.209 [info] Sent 200 in 9ms 15:07:08.083 [info] GET /sources/21/media/59028/edit 15:07:08.083 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "59028", "source_id" => "21"} Pipelines: [:browser] 15:07:08.084 [debug] QUERY OK source="media_items" db=0.6ms queue=0.1ms idle=878.5ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [59028] 15:07:08.085 [debug] QUERY OK source="settings" db=0.4ms queue=0.1ms idle=879.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:07:08.086 [debug] QUERY OK source="settings" db=0.3ms idle=879.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:07:08.087 [debug] QUERY OK source="settings" db=0.2ms idle=879.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:07:08.089 [info] Sent 200 in 5ms 15:07:12.936 [info] {"args":{"id":9},"id":203196,"meta":{},"system_time":1767413232936193421,"max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 15:07:12.937 [debug] QUERY OK source="sources" db=0.4ms idle=1150.6ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [9] 15:07:12.937 [debug] QUERY OK source="settings" db=0.3ms idle=1151.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:07:12.938 [debug] QUERY OK source="media_profiles" db=0.5ms idle=1012.7ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 15:07:12.939 [debug] QUERY OK source="settings" db=0.4ms idle=9.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:07:12.939 [debug] Fetching recent media IDs from YouTube API for playlist: UUy0Pr5u-MwGXXzp_GDd4m_g 15:07:12.939 [debug] QUERY OK source="settings" db=0.3ms idle=3.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:07:12.940 [debug] Using YouTube API key: AIzaSyByZWmv73i91ChZLb0Zm4hedQADnck9U1s 15:07:13.283 [debug] QUERY OK source="media_items" db=4.2ms idle=341.5ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND m0."media_id" IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [9, "97DBlIPSMkI", "V7Q9VnfzRqE", "Nub2m3iioSw", "Tpk6NNZubqU", "L4Eh-MtBFFk", "sa8p75KJqOc", "2gpPC0vsry0", "B2l4YfAav6M", "iL1qKxcaZnU", "NH5AAcLn03o", "8fOaCUvVQpY", "8aQ7sJ9EyaY", "ld0ngHU3YQ0", "uKzsA5kc8jw", "_A1dxw_T6dw", "TFVA0Bc5ajA", "IgFSOa0RBxs", "fGAe2cenBhs", "a6_0p8e42Y4", "vnR7jnJYN-k", "db6_ragog48", "SMKDYoXrZzw", "-fM_uGwlRlU", "kRxJ2g3T0zs", "GgU7L-z0kbA", "yFZJ6Qb8mDY", "YkyTbtgcfJU", "k01ARI01oMU", "ToFKhGfGgc0", "MU8JlJIuwh4", "IY36QIh6VG8", "brtcZFHW0P4", "A39Glu9I9fk", "Ib_1jixUkLw", "c9UIDwF7oS4", "CcSE-YHRJP4", "Tpmb_mTKuhs", "yNbz6f5dMLE", "BAVQcOWZi-Y", "Fa7RxeYNUTw", "teIoBQdGT5s", "UqykI_3CT-g", "vBeWkDTK6Eg", "qOp_nyKqmic", "fEqSlPpXHYk", "lII4lxNpPVg", "BaxD8BI3wI4", "me_afppRbyI", "C69B2k3fAvs", ...] 15:07:13.290 [debug] QUERY OK source="media_items" db=6.2ms idle=346.6ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [9] 15:07:13.293 [debug] QUERY OK source="tasks" db=0.3ms idle=352.7ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [203220, 9, ~U[2026-01-03 04:07:13Z], ~U[2026-01-03 04:07:13Z]] 15:07:13.293 [info] {"args":{"id":9},"id":203196,"meta":{},"state":"success","max_attempts":20,"queue":"fast_indexing","worker":"Pinchflat.FastIndexing.FastIndexingWorker","source":"oban","duration":356983,"event":"job:stop","queue_time":486945,"attempt":1,"tags":["media_source","fast_indexing","show_in_dashboard"]} 15:07:13.524 [info] {"source":"oban","duration":1675,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:07:26.950 [info] GET /sources/8/force_redownload 15:07:26.951 [debug] QUERY OK source="settings" db=0.8ms idle=989.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:07:26.952 [debug] QUERY OK source="settings" db=0.6ms queue=0.1ms idle=166.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:07:26.953 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 15:07:26.953 [error] #PID<0.11888.0> running PinchflatWeb.Endpoint (connection #PID<0.11887.0>, stream id 1) terminated Server: pinchflat.suranyami.com:80 (http) Request: GET /sources/8/force_redownload ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/8/force_redownload (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.11887.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/8/force_redownload", host: "pinchflat.suranyami.com", peer: {{10, 210, 0, 2}, 52758}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, zstd, deflate", "host" => "pinchflat.suranyami.com", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)", "via" => "2.0 Caddy", "x-forwarded-for" => "216.73.216.55", "x-forwarded-host" => "pinchflat.suranyami.com", "x-forwarded-proto" => "https" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.suranyami.com", method: "GET", owner: #PID<0.11888.0>, params: %{}, path_info: ["sources", "8", "force_redownload"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.suranyami.com", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {10, 210, 0, 2}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"accept-encoding", "gzip, br, zstd, deflate"}, {"host", "pinchflat.suranyami.com"}, {"user-agent", "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)"}, {"via", "2.0 Caddy"}, {"x-forwarded-for", "216.73.216.55"}, {"x-forwarded-host", "pinchflat.suranyami.com"}, {"x-forwarded-proto", "https"} ], request_path: "/sources/8/force_redownload", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GIcc--PGv-rwJzwAAQOC"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.11887.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/8/force_redownload", host: "pinchflat.suranyami.com", peer: {{10, 210, 0, 2}, 52758}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, zstd, deflate", "host" => "pinchflat.suranyami.com", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)", "via" => "2.0 Caddy", "x-forwarded-for" => "216.73.216.55", "x-forwarded-host" => "pinchflat.suranyami.com", "x-forwarded-proto" => "https" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/8/force_redownload (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.11887.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/8/force_redownload", host: "pinchflat.suranyami.com", peer: {{10, 210, 0, 2}, 52758}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, zstd, deflate", "host" => "pinchflat.suranyami.com", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)", "via" => "2.0 Caddy", "x-forwarded-for" => "216.73.216.55", "x-forwarded-host" => "pinchflat.suranyami.com", "x-forwarded-proto" => "https" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.suranyami.com", method: "GET", owner: #PID<0.11888.0>, params: %{}, path_info: ["sources", "8", "force_redownload"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.suranyami.com", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {10, 210, 0, 2}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"accept-encoding", "gzip, br, zstd, deflate"}, {"host", "pinchflat.suranyami.com"}, {"user-agent", "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)"}, {"via", "2.0 Caddy"}, {"x-forwarded-for", "216.73.216.55"}, {"x-forwarded-host", "pinchflat.suranyami.com"}, {"x-forwarded-proto", "https"} ], request_path: "/sources/8/force_redownload", (truncated) 15:07:26.961 [info] GET /sources/8/force_index 15:07:26.962 [debug] QUERY OK source="settings" db=0.5ms queue=0.1ms idle=175.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:07:26.962 [debug] QUERY OK source="settings" db=0.4ms idle=176.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:07:26.963 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 15:07:26.963 [error] #PID<0.11890.0> running PinchflatWeb.Endpoint (connection #PID<0.11887.0>, stream id 2) terminated Server: pinchflat.suranyami.com:80 (http) Request: GET /sources/8/force_index ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/8/force_index (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.11887.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/8/force_index", host: "pinchflat.suranyami.com", peer: {{10, 210, 0, 2}, 52758}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, zstd, deflate", "host" => "pinchflat.suranyami.com", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)", "via" => "2.0 Caddy", "x-forwarded-for" => "216.73.216.55", "x-forwarded-host" => "pinchflat.suranyami.com", "x-forwarded-proto" => "https" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 2, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.suranyami.com", method: "GET", owner: #PID<0.11890.0>, params: %{}, path_info: ["sources", "8", "force_index"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.suranyami.com", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {10, 210, 0, 2}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"accept-encoding", "gzip, br, zstd, deflate"}, {"host", "pinchflat.suranyami.com"}, {"user-agent", "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)"}, {"via", "2.0 Caddy"}, {"x-forwarded-for", "216.73.216.55"}, {"x-forwarded-host", "pinchflat.suranyami.com"}, {"x-forwarded-proto", "https"} ], request_path: "/sources/8/force_index", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GIcc--RuB98WrPAAAk7h"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.11887.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/8/force_index", host: "pinchflat.suranyami.com", peer: {{10, 210, 0, 2}, 52758}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, zstd, deflate", "host" => "pinchflat.suranyami.com", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)", "via" => "2.0 Caddy", "x-forwarded-for" => "216.73.216.55", "x-forwarded-host" => "pinchflat.suranyami.com", "x-forwarded-proto" => "https" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 2, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/8/force_index (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.11887.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/8/force_index", host: "pinchflat.suranyami.com", peer: {{10, 210, 0, 2}, 52758}, bindings: %{}, sock: {{10, 210, 5, 3}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, zstd, deflate", "host" => "pinchflat.suranyami.com", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)", "via" => "2.0 Caddy", "x-forwarded-for" => "216.73.216.55", "x-forwarded-host" => "pinchflat.suranyami.com", "x-forwarded-proto" => "https" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 2, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.suranyami.com", method: "GET", owner: #PID<0.11890.0>, params: %{}, path_info: ["sources", "8", "force_index"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.suranyami.com", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {10, 210, 0, 2}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"accept-encoding", "gzip, br, zstd, deflate"}, {"host", "pinchflat.suranyami.com"}, {"user-agent", "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)"}, {"via", "2.0 Caddy"}, {"x-forwarded-for", "216.73.216.55"}, {"x-forwarded-host", "pinchflat.suranyami.com"}, {"x-forwarded-proto", "https"} ], request_path: "/sources/8/force_index", resp_body: nil, resp_cookies: %{}, (truncated)